Android 的ToggleButton, Spinner和Picker

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值