遇見,控件-----Spinner

本文介紹的是Android常用控件Spinner的使用方法

下面是導讀:
1.什麼時Spinner
2.如何使用Spinner
3.總結

1.什麼是Spinner?

 Spinner提供了從一個數據集合中快速選擇一項值的辦法。默認情況下Spinner顯示的是當前選擇的值,點擊Spinner會彈出一個包含所有可選值的dropdown菜單,從該菜單中可以爲Spinner選擇一個新值。

下圖是Android6.0系統的Spinner樣式:
Spinner

2.如何使用Spinner?

靜態添加數據:

第一步:設計xml佈局

  <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <Spinner
            android:id="@+id/spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:entries="@array/languages"
          />
    </LinearLayout>

佈局中僅有一個Spinner控件

第二步:在res-values-string.xml文件裏新添加數組資源如下

   <string-array name="it">
        <item>c語言</item>
        <item>c++</item>
        <item>Java</item>
        <item>Python</item>
        <item>PHP</item>
    </string-array>

在resources標籤內直接添加條目就可以。

第三步:在Activity類中添加內容

聲明變量:

 //下拉菜單
    private Spinner spinner;

在onCreate()方法裏添加以下內容

        //初始化spinner對象
  spinner= (Spinner) findViewById(R.id.spinner);
        //設置適配器
        /*參數1:context上下文
        參數2:設置好的數據
        參數3:系統默認Spinner初始佈局(打開Activity顯示的Spinner佈局)
        */
        final ArrayAdapter<CharSequence> spinneradapter=ArrayAdapter.createFromResource(
                this,R.array.it,android.R.layout.simple_spinner_item
        );

        //設置展示的項佈局(點擊下拉按鈕後展示的佈局)
        //此處使用的是系統默認佈局    spinneradapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
         //設置適配器
        spinner.setAdapter(spinneradapter);
        //設置監聽器
       spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
           @Override
           public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
               String se=parent.getItemAtPosition(position).toString();
               //獲取用戶選擇
               Toast.makeText(LoginActivity.this,se,Toast.LENGTH_SHORT).show();
           }

           @Override
           public void onNothingSelected(AdapterView<?> parent) {
               Toast.makeText(LoginActivity.this,"未選擇",Toast.LENGTH_SHORT).show();
           }
       });

動態添加數據:

首先動態添加數據的xml文件是和靜態添加一樣的,不同的是第二步內容如下:

在onCreate()方法裏添加如下內容:

     //首先獲取spinner對象
        spinner= (Spinner) findViewById(R.id.spinner);
     //然後使用動態添加的方法來添加數據
        List<String> list =new ArrayList<String>();
        list.add("數據");
        list.add("數據2");
        //適配器還是默認的適配器,這邊使用了一個佈局文件,我們可以自定義這個佈局,第一個參數是context,第二個是自定義佈局(列表中每一個條目的樣式),第三個是控件id,第四個是數據
        ArrayAdapter adapter=new ArrayAdapter(this,R.layout.item,R.id.textView,list);
       //關聯適配器
        spinner.setAdapter(spinneradapter);
       spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
           @Override
           public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
               String se=parent.getItemAtPosition(position).toString();
               //獲取用戶選擇
               Toast.makeText(LoginActivity.this,se,Toast.LENGTH_SHORT).show();
           }

           @Override
           public void onNothingSelected(AdapterView<?> parent) {
               Toast.makeText(LoginActivity.this,"未選擇",Toast.LENGTH_SHORT).show();
           }
       });

3.總結

Spinner常被用在需要擴展選擇的地方,樣式也是可以自定義,根據自己的需要設置item佈局,配置自己的適配器,從而達到自己想要的風格,不過一般是修改列表項的樣式,至於Spinner收縮時的樣式儘量不要修改,避免用戶造成誤會。

補充:Spinner的一些xml屬性
android:spinnerMode=”dialog/dropdown” 設置下拉樣式還是對話框樣式
android:popupBackground=”圖片地址” 設置下拉模式背景圖片
更多屬性請參考開發者文檔。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章