Android开发中那些你费力写的控件,其实原生都有,本篇文章重点讲解Android中那些你忽略的控件:
1、SearchView
2、Switch
3、AutoCompleteTextView
4、CalendarView
5、DatePicker
6、Chronomet
7、ExpandableListView
8、ViewSwitcher
执笔不易,更多文章还请大家关注左侧我的公众账号。
开发当中比如说让你写一个根据用户的输入,去搜索相关内容,你会怎么实现,写一个输入框,监听输入框的内容变化,调起软键盘的搜索或者确认键进行搜索?还有,让你实现一个开关的切换,你会怎么做,写一个layout,一半点击为开,一半点击为关,还是两张图片,点一下开,再点一下关?让你实现一个根据用户的输入弹出一个下拉菜单等等,其实都大可没有必要去自己写,本身Android里都有,下面对各个控件,我会一一举例。
1、SearchView
SearchView这个控件,主要用来处理用户的输入,并对用户的输入做出响应。
先看下各个属性介绍:
属性名称
相关方法
描述
android:iconifiedByDefault
setIconifiedByDefault(boolean)
设置搜索图标是否显示在搜索框内
android:imeOptions
setImeOptions(int)
设置输入法搜索选项字段,默认是搜索,可以是:下一页、发送、完成等
android:inputType
setInputType(int)
设置输入类型
android:maxWidth
setMaxWidth(int)
设置最大宽度
android:queryHint
setQueryHint(CharSequence)
设置查询提示字符串
XML里引用
android:layout_width="match_parent"
android:layout_height="50dp"
android:iconifiedByDefault="false"
android:queryHint="请输入要搜寻的东西"/>
代码里通过以下方法可以监听用户的输入
SearchView mSearchView = (SearchView) findViewById(R.id.seach);
mSearchView.setOnQueryTextListener(newSearchView.OnQueryTextListener() {
//点击搜索
@Override
public booleanonQueryTextSubmit(String query) {
Log.i("MainActivity",query);
return false;
}
//搜索内容改变
@Override
public booleanonQueryTextChange(String newText) {
Log.i("MainActivity",newText);
return false;
}
});
具体效果可见下图:
2、Switch
Switch控件主要作用是描述一个开关,可以滑动,也可以点击,省去了我们自定义的很多不必要的麻烦。
XML里引用
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
/>
代码里监听状态
Switch mSwitch=(Switch) findViewById(R.id.switchs);
mSwitch.setOnCheckedChangeListener(newCompoundButton.OnCheckedChangeListener() {
@Override
public voidonCheckedChanged(CompoundButton buttonView, booleanisChecked) {
//开
if(isChecked){
}else{
//关
}
}
});
具体效果如下图:
具体UI我们可以自己来调整,可通过下面两个属性,第一个设置是设置拖动按钮,第二个是设置背景。
android:thumb="@drawable/switch_bg”
android:track="@drawable/track_bg"
设置自动选中状态可以通过android:checked="true”来设置。
3、AutoCompleteTextView
AutoCompleteTextView控件可以根据用户的输入,弹出一个下拉菜单
AutoCompleteTextView常用属性
android:completionHint
设置出现在下拉菜单中的提示标题
android:completionThreshold
设置用户至少输入多少个字符才会显示提示
android:dropDownHorizontalOffset
下拉菜单于文本框之间的水平偏移。默认与文本框左对齐
android:dropDownHeight
下拉菜单的高度
android:dropDownWidth
下拉菜单的宽度
android:singleLine
单行显示
android:dropDownVerticalOffset
垂直偏移量
XML里引用:
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/autotext"
/>
代码实现:
AutoCompleteTextView autotext =(AutoCompleteTextView) findViewById(R.id.autotext);
finalString [] arr={"1001","1002","1003","1004"};
ArrayAdapter arrayAdapter =newArrayAdapter
//设置Adapter
autotext.setAdapter(arrayAdapter);
//监听item选择
autotext.setOnItemClickListener(newAdapterView.OnItemClickListener() {
@Override
public voidonItemClick(AdapterViewparent,View view, intposition, longid) {
Toast.makeText(MainActivity.this,arr[position],Toast.LENGTH_LONG).show();
}
});
具体效果见下图:
4、CalendarView
CalendarView这个控件是要是用于显示日历。
其各个属性如下显示:
android:dateTextAppearance 设置日历View在日历表格中的字体皮肤;
android:firstDayOfWeek 指定日历第一个星期的第一天,在日历中横向所在位置,从右边向左数,从1开始计数;
android:focusedMonthDateColor 设置日历表格当月显示的日期字体颜色;
android:maxDate 设置日历能够显示的最大日期;
android:minDate 设置日历能够显示的最小日期;
android:selectedDateVerticalBar 设置当前选择日期选择边框左右两边显示的图标;
android:selectedWeekBackgroundColor 设置当前选择日期所在行的背景颜色(除了选中的日期之外);
android:showWeekNumber 设置是否显示周期数量;
android:shownWeekCount 设置设备一屏显示多少周即多少行;
android:unfocusedMonthDateColor 设置非当前选择月的字体颜色与focusedMonthDateColor相反;
android:weekNumberColor 设置显示周期编号字体的颜色;
android:weekSeparatorLineColor 设置日历每行之间分割线的颜色;
XML里引用:
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
代码实现选择日期:
CalendarView mCalendarView=(CalendarView) findViewById(R.id.calendar);
//获取日期点击事件
mCalendarView.setOnDateChangeListener(newCalendarView.OnDateChangeListener() {
@Override
public voidonSelectedDayChange(CalendarView view, intyear, intmonth, intdayOfMonth) {
Toast.makeText(MainActivity.this,year+"==="+(month+1)+"==="+dayOfMonth,Toast.LENGTH_LONG).show();
}
});
效果如下图:
来源: http://www.92to.com/bangong/2017/03-17/18933691.html