spinner控件

1、效果圖

效果圖

2、實(shí)現(xiàn)方法

方法一

直接上xml

<?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"
    >

    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <RadioButton
            android:id="@+id/firstButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="BatMan"
            android:onClick="chooseHero"/>

        <RadioButton
            android:id="@+id/secondButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Superman"
            android:onClick="chooseHero"/>

        <RadioButton
            android:id="@+id/thirdButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Godess"
            android:onClick="chooseHero"/>

        <RadioButton
            android:id="@+id/fourthButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="One"
            android:onClick="chooseHero"/>
    </RadioGroup>
    <Spinner
        android:id="@+id/spinner"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:entries="@array/superhero"/>
    
    <ImageButton
        android:id="@+id/heroImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/bat"/>

</LinearLayout>

其中android:entries="@array/superhero"一行,需要在/resource/values下定義,一般對于這種列表型的,新建一個(gè)arrays.xml,這只是通用做法,但不是必須,arrays.xml代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="superhero">
        <item>蝙蝠俠</item>
        <item>大超</item>
        <item>神奇女俠</item>
        <item>one老師</item>
    </string-array>
</resources>

activity_xml實(shí)際調(diào)用時(shí),是根據(jù)string-array類型和name去查找,所以arrays.xml的文件名不是必須的。通過這兩個(gè)xml即可完成最簡單的spinner控件。

Android系統(tǒng)對所有的xml資源文件其實(shí)是不加區(qū)別的,覺得values資源類型的不在于放在什么什么文件,而在于標(biāo)簽名,比如string-array的標(biāo)簽名決定了這是一個(gè)array資源。

建議將數(shù)組資源統(tǒng)一放在values/arrays.xml中。

方法二

在代碼中添加spinner,首先在xml中添加spinner控件,如下:

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

與方法一的區(qū)別在于entries,因?yàn)榫唧w的入口是在代碼中完成的。在MainActivity中的onCreate中添加spinner控件需要3個(gè)對象:1、Spinner;2、數(shù)據(jù)(List);3、 適配器(ArrayAdapter)。添加代碼如下:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.Spinner;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        spinner_withcode = (Spinner) findViewById(R.id.spinner_code);
        data_list = new ArrayList<String>();
        data_list.add("bat");
        data_list.add("lady");
        data_list.add("super");
        data_list.add("unbelievable");

        // 適配器
        arr_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, data_list);

        // 設(shè)置樣式
        arr_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        // 加載適配器
        spinner_withcode.setAdapter(arr_adapter);

    }

    public void chooseHero(View view) {

        ImageButton heroImage = (ImageButton)findViewById(R.id.heroImage);
        int heroImageId = 0;

        if (view.getId() == R.id.firstButton) {
            heroImageId = R.drawable.bat;
        } else if (view.getId() == R.id.secondButton) {
            heroImageId = R.drawable.superman;
        } else if (view.getId() == R.id.thirdButton) {
            heroImageId = R.drawable.godess;
        } else if (view.getId() == R.id.fourthButton) {
            heroImageId = R.drawable.one;

        }
        heroImage.setImageResource(heroImageId);


    }

    private Spinner spinner_withcode;
    private List<String>data_list;
    private ArrayAdapter<String> arr_adapter;
}

關(guān)于ArrayAdapter的詳細(xì)描述,可見Android ArrayAdapter 詳解
android.R.layout.simple_spinner_item和layout.simple_spinner_dropdown_item都是AS內(nèi)部的xml,兩者的主要區(qū)別在于前者比后者多一個(gè)屬性android:textAlignment="inherit",實(shí)際效果圖如下:

simple_spinner_item.xml

simple_spinner_dropdown_item.xml

android layout的屬性,可在android layout布局屬性查詢。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容