spinner

微调框

微调框提供一种方法,让用户可以从值集中快速选择一个值。默认状态下,微调框显示其当前所选的值。 触摸微调框可显示下拉菜单,其中列有所有其他可用值,用户可从中选择一个新值。

您可以使用 Spinner 对象向您的布局中添加一个微调框。通常应在 XML 布局中使用 <Spinner> 元素来执行此操作。 例如:

<Spinner
    android:id="@+id/planets_spinner"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

要使用选择列表填充微调框,还需要在 Activity 或 Fragment 源代码中指定 SpinnerAdapter

数据源必须是 SpinnerAdapter 来提供。

但是由于这些是其子类,所有他们肯定也是可以的

例如,如果预先确定了微调框的可用选择,则可通过字符串资源文件中定义的字符串数组来提供这些选择。

<?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 中使用以下代码,以使用 ArrayAdapter 实例为微调框提供该数组。

Spinner spinner = (Spinner) findViewById(R.id.spinner);
// Create an ArrayAdapter using the string array and a default spinner layout
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() 方法允许从字符串数组创建 ArrayAdapter。 此方法的第三个参数是布局资源,其定义所选选择如何显示在微调框控件中。simple_spinner_item 布局由平台提供,是默认布局,除非您想为微调框外观定义自己的布局,否则应使用此布局。

然后,应调用 setDropDownViewResource(int) 指定适配器应用于显示微调框选择列表的布局(simple_spinner_dropdown(下拉)_item 是平台定义的另一标准布局)。

调用 setAdapter() 以将适配器应用到 Spinner

响应用户选择


当用户从下拉菜单中选择一个项目时,Spinner 对象会收到一个 on-item-selected 事件。

要为微调框定义选择事件处理程序,请实现 AdapterView.OnItemSelectedListener 接口以及相应的 onItemSelected() 回调方法。例如,以下是 Activity 中的一个接口实现:

public class SpinnerActivity extends Activity implements OnItemSelectedListener {
    ...

    public void onItemSelected(AdapterView<?> parent, View view,
            int pos, long id) {
        // An item was selected. You can retrieve the selected item using
        // parent.getItemAtPosition(pos)
    }

    public void onNothingSelected(AdapterView<?> parent) {
        // Another interface callback
    }
}

AdapterView.OnItemSelectedListener 需要 onItemSelected() 和 onNothingSelected() 回调方法。

然后,您需要调用 setOnItemSelectedListener() 来指定接口实现:

Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(this);

如果您使用 Activity 或 Fragment 来实现 AdapterView.OnItemSelectedListener 接口(如上例),则可以传递 this 作为接口实例。

 

有趣的属性:

spinner 的下拉三角号的显示与不显示:  spinner 的 background 设置为 "@null" 时,spinner 的三角号就可以消失了,默认有三角号

Spinner有两种显示形式,一种是下拉菜单,一种是弹出框,菜单显示形式是spinnerMode属性决定的:

android:spinnerMode="dropdown"android:spinnerMode="dialog"

entries: 直接在xml布局文件中绑定数据源android:entries="@array/languages"prompt:

在Spinner弹出选择对话框的时候对话框的标题android:prompt="@string/dialog_title

 

 

posted @ 2018-03-24 23:23  Gaoyongxian666  阅读(424)  评论(0编辑  收藏  举报