Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Spinner

Android Spinner

編輯:關於Android編程

Android 中下拉列表選擇,提供了控件Spinner,現做一個小總結,以備使用。從1.Spinner屬性2.設置Spinner的adapter說起。

1.Spinner屬性

首先寫一個簡單的Spinner

activity_main.xml



    
values/arrays中的spin001_array資源:
        中國工商銀行
        中國人民銀行
        中國銀行
        中國建設銀行
        中國農業銀行
        招商銀行
    

如果不需要邏輯的話,至此一個簡單的下拉菜單就寫完了,不需要adapter,也不需要在MainActivity中findViewById(),看效果圖:

001

Spinner的具體屬性

- android:entries=”@array/spin001_array”

可以直接在xml中綁定數據源。上面的例子就是這種方式實現的。

- spinnerMode: 顯示形式

有dropdown和dialog兩種顯示模式。上面的例子就是dropdown形式的,dialog形式的為:

 

002

- spin001.setDropDownHorizontalOffset();

spinnerMode=”dropdown”時,下拉的項目選擇窗口在水平方向相對於Spinner窗口的偏移量。單位為pixels像素值。

- android:dropDownSelector

用於設置列表選擇器的顯示效果。

- spin001.setDropDownVerticalOffset();

spinnerMode=”dropdown”時,下拉的項目選擇窗口在垂直方向相對於Spinner窗口的偏移量。單位為pixels像素值。

- android:dropDownWidth=”“

設置下拉的項目選擇窗口的寬度。

- android:popupBackground=”“

設置下拉的項目選擇窗口的背景。

- spin001.setPopupBackgroundDrawable();

設置下拉的項目選擇窗口的背景dwawable。效果圖:

bg

- android:prompt=”@string/bank_prompt”

設置下拉的項目選擇窗口的標題,要采用@string/格式引用數據,不然會報錯的。效果圖:

title

2.設置Spinner的adapter

- 采用ArrayAdapter

  ArrayAdapter adapter = ArrayAdapter.createFromResource(
                this, R.array.spin001_array, android.R.layout.simple_spinner_item);
  spin001.setAdapter(adapter);

效果圖如下:

 

array

 

細心的我們會發現,為何在下拉窗口中,item之間的間距這麼小,看著很不舒服,這時候就需要自定義下拉item了。在adapter中提供了一個方法setDropDownViewResource();利用它就可以實現美觀的效果了。

adapter.setDropDownViewResource(R.layout.custom_spinner_item);代碼如下:

效果如下:

 

custom

- 自定義BaseAdapter

當我們需要在下拉框中顯示一個用戶信息,比如頭像,用戶名,手機號時,我們就需要使用BaseAdapter了。效果圖如下:

baseAdapter

代碼:
activity_main.xml




    

MainActivity.java

  Spinner spin002 = (Spinner) findViewById(R.id.spin002);
        // 建立數據源
        List persons = new ArrayList();
        persons.add(new Person("小明", "153********"));
        persons.add(new Person("小亮", "136********"));
        persons.add(new Person("花花", "170********"));
        persons.add(new Person("瓜瓜", "139********"));
        //  建立Adapter綁定數據源
        MySpinnerAdapter mAdapter = new MySpinnerAdapter(this, persons);
        //綁定Adapter
        spin002.setAdapter(mAdapter);

Person.java

/**
 * @author zyc
 * created at 2016/4/27 11:28
 */
public class Person {

    private String personName;
    private String cellPhone;

    public Person(String personName, String cellPhone) {
        super();
        this.personName = personName;
        this.cellPhone = cellPhone;
    }

    public String getPersonName() {
        return personName;
    }

    public void setPersonName(String personName) {
        this.personName = personName;
    }

    public String getcellPhone() {
        return cellPhone;
    }

    public void setcellPhone(String cellPhone) {
        this.cellPhone = cellPhone;
    }

}

MySpinnerAdapter.java

/**
 * @author zyc
 * created at 2016/4/27 11:30
 */
public class MySpinnerAdapter extends BaseAdapter {

    private Context mContext;
    private List mList;
    private final LayoutInflater layoutInflater;

    public MySpinnerAdapter(Context context, List persons) {
        this.mContext = context;
        this.mList = persons;
        layoutInflater = LayoutInflater.from(mContext);
    }

    @Override
    public int getCount() {
        return mList.size();
    }

    @Override
    public Object getItem(int i) {
        return mList.get(i);
    }

    @Override
    public long getItemId(int i) {
        return 0;
    }

    @Override
    public View getView(int i, View convertView, ViewGroup viewGroup) {

        convertView = layoutInflater.inflate(R.layout.spinner_base_adapter, viewGroup, false);
        if (convertView != null) {
            ImageView imageView = (ImageView) convertView.findViewById(R.id.iv_head);
            imageView.setImageResource(R.drawable.dachaoxuexi);
            TextView tv_name = (TextView) convertView.findViewById(R.id.tv_name);
            TextView tv_cell_phone = (TextView) convertView.findViewById(R.id.tv_cell_phone);
            tv_name.setText(mList.get(i).getPersonName());
            tv_cell_phone.setText(mList.get(i).getcellPhone());
        }
        return convertView;
    }
}

ok,Spinner的使用總結,就到這了,有需要補充的,後續會補充上的。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved