前言:實現的功能爲界面顯示兩個spinner組件,點擊下拉框內的選項以後,彈出toast提示選中了哪一個選項。界面以下:android
一、先在xml文件中定義spinner組件。由於用到了兩種實現方式,因此定義兩個spinner。git
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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" tools:context=".MainActivity"> <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:paddingTop="20dp"> <TextView android:id="@+id/tView_1" android:layout_width="wrap_content" android:layout_height="match_parent" android:text="spinner1" /> <Spinner android:id="@+id/spinner_1" android:layout_width="wrap_content" android:layout_height="match_parent" android:entries="@array/spinner1_array" /> </LinearLayout> <LinearLayout android:id="@+id/linearLayout2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/linearLayout1" android:paddingTop="30dp"> <TextView android:id="@+id/tView_2" android:layout_width="wrap_content" android:layout_height="match_parent" android:text="spinner2" /> <Spinner android:id="@+id/spinner_2" android:layout_width="wrap_content" android:layout_height="match_parent" android:dropDownWidth="100dp" android:popupBackground="@drawable/background" android:dropDownSelector="@color/colorPrimary" /> </LinearLayout> </RelativeLayout>
二、接着咱們還得在string.xml中設置一下須要顯示的數據,spinner1的數據直接顯示,spinner2的數據經過Adapter傳遞顯示。github
還能夠經過代碼賦值,而後用Adapter傳遞顯示,可是我有點懶,就沒有寫這種。數組
<resources> <string name="app_name">Spinner_activity</string> <string-array name="spinner1_array"> <item>Toast1</item> <item>Toast2</item> <item>Toast3</item> <item>Toast4</item> <item>Toast5</item> <item>Toast6</item> </string-array> <string-array name="spinner2_array"> <item>Toast1</item> <item>Toast2</item> <item>Toast3</item> <item>Toast4</item> <item>Toast5</item> <item>Toast6</item> </string-array> </resources>
三、而後是在MainActivity中進行spinner的綁定、監聽、點擊事件的設置。app
package com.example.yonghu.spinner_activity; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; import static android.widget.Toast.*; public class MainActivity extends AppCompatActivity{ @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //method 1: //綁定組件,而後監聽,以及new一個監聽的響應事件 Spinner spinner1 = (Spinner) findViewById(R.id.spinner_1); spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){ @Override public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { Toast.makeText(MainActivity.this, adapterView.getItemAtPosition(i).toString()+" select by spinner1", LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> adapterView) { } }); //method 2: //定義叫adapter的ArrayAdapter適配器(spinner視圖與array-string的加工廠) // 給adapter傳遞數據,參數能夠理解爲(MainActivity.this , 數據原料來源, 數據加工方式:數組中的一個元素就是一個spinner選項) //將adapter的數據傳遞出去給spinner視圖(加工完了,賣給spinner視圖) //定義名字叫spinnner2的Spinner,順便綁定到視圖(spinner2找到了名字) //將adapter綁定到spinner2(spinner2找到了數據) //監聽,以及new一個監聽的響應事件 ArrayAdapter<CharSequence> adapter; adapter=ArrayAdapter.createFromResource(this, R.array.spinner2_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); Spinner spinner2 = (Spinner) findViewById(R.id.spinner_2); spinner2.setAdapter(adapter); spinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int positon, long id) { Toast.makeText(MainActivity.this, parent.getItemAtPosition(positon).toString()+"select by spinner2", LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> adapterView) { } }); } }
最後本文的android studio版本爲3.1.二、gradle運行版本爲4.六、gradle插件版本爲3.2.0。若是環境不匹配可能會有不少使人詫異的報錯。ide
下面附上github: https://github.com/caesura-k/spinner_activity.gitgradle