Spinner提供了从一个数据集合中快速选择一项值的办法。
有时有些数据是需要直接提供给用户,供用户选择,避免用户输入,从而提供一个下来列表。
默认情况下Spinner显示的是当前选择的值。
编码实现:
1.实例化Spinner组件
2.设置适配数组,供用户选择的数据
3.设置监听 setOnItemSelectedListener 实现 onItemSelected 方法获取用户选择项,setVisibility 方法设置当前显示项
public class MainActivity extends AppCompatActivity { private Spinner m_Spinner; private TextView m_TextView; //数据源 private static String[] mStr = {"A型","B型","O型","AB型"}; //适配器 private ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); m_Spinner = (Spinner) findViewById(R.id.Spinner); m_TextView = (TextView)findViewById(R.id.textView); //初始化适配器 adapter = new ArrayAdapter<String> (MainActivity.this,android.R.layout.simple_list_item_1,mStr); //设置下拉列表的风格 adapter.setDropDownViewResource (android.R.layout.simple_spinner_dropdown_item); //设置适配器 m_Spinner.setAdapter (adapter); //添加监听事件 m_Spinner.setOnItemSelectedListener (new AdapterView.OnItemSelectedListener () { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { m_TextView.setText ("你的血型是:"+mStr[position]); //设置显示当前选择的项 view.setVisibility (View.VISIBLE); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } }
布局文件:
注意:默认布局Spinner 弹窗会遮挡Spinner组件,需设置 android:overlapAnchor="false"
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="textdome.android.okl.com.spinner.MainActivity"> <TextView android:id="@+id/textView" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello World!"/> <Spinner android:id="@+id/Spinner" android:layout_width="match_parent" android:layout_height="wrap_content" android:overlapAnchor="false" android:layout_gravity="center_horizontal" /> </LinearLayout>