Android 的ToggleButton, Spinner和Picker
2015-12-05 12:08
513 查看
ToggleButtons:
Toggle Button是切换按钮, 很简单, 可以在两种状态中切换. 我们可以通过在XML文件中添加ToggleButton对象来创建一个ToggleButton,在API14之后我们还可以添加一种新的类型的ToggleButton—Switch对象.这是ToggleButton对象:
这是Switches对象:
如果我们需要通过代码改变ToggleButton的状态, 我们可以使用CompoundButton.setChecked() 或者CompoundButton.toggle()方法来实现.
响应按钮点击事件:
我们需要CompoundButton.OnCheckedChangeListener对象来监听ToggleButton的点击事件, 代码如下:ToggleButton toggle
= (ToggleButton) findViewById(R.id.togglebutton);
toggle.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked)
{
if (isChecked)
{
// The toggle isenabled
} else
{
// The toggle isdisabled
}
}
});
Spinners:
Spinner为用户提供了一种快速的在多个值中选择一个值的控件, 默认情况下spinner会显示当前已经被选中的值. 点击spinner的时候, 它会显示一个下拉列表, 展示出可以选择的数据, 用户可以在其中选择一个.我们可以通过在XML文件中创建<Spinner>标签来增加一个spinner控件:
<Spinner
android:id="@+id/planets_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
如果想要填充数据, 那么需要在Activity或者Fragment中指定一个SpinnerAdapter.
为spinner填充数据:
指定spinner的填充数据的方法跟AutoCompleteTextView的用法有点相似. 需要为spinner指定一个SpinnerAdapter(一个interface), 根据数据源的不同可以选择ArrayAdapter或者CursorAdapter.栗子:
假如我们的数据从数组来, 首先在XML文件中声明一个string数组:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array
name="planets_array">
<item>Mercury</item>
<item>Venus</item>
<item>Earth</item>
<item>Mars</item>
<item>Jupiter</item>
<item>Saturn</item>
<item>Uranus</item>
<item>Neptune</item>
</string-array>
</resources>
然后在Activity或者Fragment中为spinner指定一个ArrayAdapter:
Spinner spinner
= (Spinner) findViewById(R.id.spinner);
// Create an ArrayAdapter using the string array and a default spinnerlayout
ArrayAdapter<CharSequence> adapter
= ArrayAdapter.createFromResource(this,
R.array.planets_array, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
spinner.setAdapter(adapter);
使用createFromResource()可以让我们从string array资源中创建一个ArrayAdapter. 第三个参数android.R.layout.simple_spinner_item指定了spinner中的选项应该如何显示在spinner中.simple_spinner_item是由系统提供的默认layout, 如果我们觉得不合适还可以定义自己的layout.
响应用户的选择:
当用户从下拉列表中选择一项的时候, Spinner对象将会收到一个on-item-selected事件. 为了处理这一事件我们需要实现AdapterView.OnItemSelectedListener接口, 然后用onItemSelected()方法来处理具体的操作. 栗子:public
class SpinnerActivity
extends Activity
implements OnItemSelectedListener
{
...
public void onItemSelected(AdapterView<?> parent,
View view,
int pos,
long id)
{
// An item was selected. You can retrievethe selected item using
// parent.getItemAtPosition(pos)
}
public void onNothingSelected(AdapterView<?> parent)
{
// Another interface callback
}
}
AdapterView.OnItemSelectedListener接口需要实现onItemSelected()方法和onNothingSelected()方法. 然后绑定给spinner:
Spinner spinner
= (Spinner) findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(this);
Pickers:
可以让用户选择时间和日期的选择器. 造型如下图:使用该控件最大的好处是可以保证用户输入的格式是正确的, 并且时间和日期一定是可用的.
Android官方建议使用DialogFragment来显示一个时间或者日期的picker.
使用TimePicker:
当使用DialogFragment显示TimePickerDialog的时候, 我们需要扩展DialogFragment, 然后在fragment的onCreateDialog()方法中返回一个TimePickerDialog. 两个步骤:1. 定义onCreateDialog()方法并返回一个TimePickerDialog实例
2. 实现TimePickerDialog.OnTimeSetListener接口接收回调方法.
栗子:
public
static class
TimePickerFragment extends
DialogFragment
implements
TimePickerDialog.OnTimeSetListener
{
@Override
public Dialog onCreateDialog(BundlesavedInstanceState)
{
// Use the current time as the defaultvalues for the picker
final Calendar c
= Calendar.getInstance();
int hour = c.get(Calendar.HOUR_OF_DAY);
int minute
= c.get(Calendar.MINUTE);
// Create a new instance ofTimePickerDialog and return it
return new
TimePickerDialog(getActivity(),
this, hour, minute,
DateFormat.is24HourFormat(getActivity()));
}
public void onTimeSet(TimePicker view,
int hourOfDay,
int minute)
{
// Do something with the time chosen by theuser
}
}
现在监听事件和本体都已经有了, 那么我们需要做的就是让它弹出来, 只需要调用DialogFragment的show()方法即可. 栗子:
public
voidshowTimePickerDialog(View v)
{
DialogFragment newFragment
= new TimePickerFragment();
newFragment.show(getSupportFragmentManager(),
"timePicker");
}
使用Data Picker大致跟Time Picker一样.
参考: http://developer.android.com/guide/topics/ui/controls/togglebutton.html
http://developer.android.com/guide/topics/ui/controls/spinner.html
http://developer.android.com/guide/topics/ui/controls/pickers.html
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories