zoukankan      html  css  js  c++  java
  • android基础组件---->Spinner的使用

      Spinner提供了一个快速的方式从集合中选择值。在默认状态下,一个Spinner显示的是当前选择的值。触摸Spinner会显示一个下拉菜单,用户可以从中选择一个值。今天我们就开始Spinner的学习。与灵魂作伴,让时间对峙荒凉,我无需对任何人交代。

    Spinner的使用

    项目结构如下:

    在xml文件中定义一个spinner,如下:

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

    在Spinner中增加一个选择列表,你需要在你的Activity或者Fragment代码中指定一个SpinnerAdapter。

    在Spinner中增加一个选择列表

    Spinner中的列表内容可以来自任何来源,但是需要一个SpinnerAdapter,比如如果选择内容是一个数组,那么Adapter是ArrayAdapter,再或者选择内容来自于数据库查询,那么Adapter是CursorAdapter。

    例如如果选择内容是预先确定的,你可以在string的资源文件中指定一个array内容: spinner.xml。

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="spinner_array">
            <item>Linux</item>
            <item>Huhx</item>
            <item>LiuLi</item>
            <item>ChenHui</item>
            <item>Android</item>
        </string-array>
    </resources>

    在Activity或者Fragment中提供一个ArrayAdapter的实例,如下:

    spinner = (Spinner) findViewById(R.id.spinner);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.spinner_array, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

     createFromResource方法允许你从一个字符数组中创建一个ArrayAdapter。第二个参数是在资源文件中定义的数组,第三个参数是定义spinner选择的方式。simple_spinner_item.xml如下:

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
        android:id="@android:id/text1"
        style="?android:attr/spinnerItemStyle"
        android:singleLine="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:textAlignment="inherit"/>

     然后你需要调用setDropDownViewResource方法去指定spinner列表中的布局:support_simple_spinner_dropdown_item.xml如下:

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@android:id/text1"
              style="?attr/spinnerDropDownItemStyle"
              android:singleLine="true"
              android:layout_width="match_parent"
              android:layout_height="?attr/dropdownListPreferredItemHeight"
              android:ellipsize="marquee"/>

    响应用户选择spinner的事件

    当用户在下拉菜单中选择一行,Spinner对象接收一个on-item-selected事件:

    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            if (view instanceof TextView) {
                Toast.makeText(MainActivity.this, ((TextView) view).getText().toString(), Toast.LENGTH_SHORT).show();
            }
            Log.i(TAG, "viewa: " + view + ", parent: " + parent + ", position: " + position + ", id: " + id);
        }
    
        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            Log.i(TAG, "on nothing selected");
        }
    });

     运行效果如下:

    友情链接

  • 相关阅读:
    纯JavaScript实现HTML5 Canvas六种特效滤镜
    玩转html5 的 canvas画图
    为什么 ++[[]][+[]]+[+[]] = 10?
    作用域和闭包
    7 个令人惊讶的 JavaScript “特
    60个有用css代码片段
    函数
    数组
    我们为什么要尝试前后端分离
    javascript面向对象——构造函数和原型对象
  • 原文地址:https://www.cnblogs.com/huhx/p/baseuseandroidspinner.html
Copyright © 2011-2022 走看看