android的spinner
A. android spinner是什麼
Android中的Spinner是一個用戶界面組件,允許用戶從一系列預定義的選項中選擇一個。以下是關於Android Spinner的詳細解答:
1. 主要功能與特點:
- 節省屏幕空間:Spinner類似於下拉列表,但它在未展開時不會顯示所有選項,從而節省了屏幕空間。
- 數據源綁定:Spinner可以綁定到一個數組、列表或任何實現了Cursor介面的數據源,這使得數據的管理和更新變得更加方便。
2. 布局與定義:
- 布局文件:在Android的布局文件中,Spinner通常使用<Spinner>標簽來定義。開發者可以在XML文件中指定Spinner的位置、大小和其他屬性。
3. 用戶交互:
- 展開與收起:用戶可以通過點擊Spinner旁邊的箭頭按鈕來展開或收起選項列表。這種交互方式使得Spinner在用戶界面上既簡潔又實用。
4. 事件監聽與處理:
- 事件監聽:Spinner支持事件監聽功能。當用戶選擇一個選項時,開發者可以通過設置一個OnItemSelectedListener來處理這一事件,從而執行相應的邏輯操作。
5. 應用場景:
- 表單選項:在表單中提供選項選擇,如性別、職業等。
- 列表篩選:在列表視圖中提供篩選功能,允許用戶通過選擇篩選條件來過濾列表項。
- 設置界面:在設置界面中提供配置選項,如語言選擇、主題設置等。
6. 發展趨勢:
- 逐漸被取代:隨著Android版本的更新和技術的發展,Spinner逐漸被RecyclerView和SpinnerAdapter等更靈活的組件所取代。這些新組件提供了更強大的功能和更好的性能表現。
- 廣泛應用:盡管如此,Spinner仍然在一些舊的應用程序和簡單的UI設計中被廣泛使用,特別是在需要節省屏幕空間並提供下拉選擇功能的場景中。
B. android中spinner如何實現省市二級聯動
Androidspinner實現省市二級聯動,需要自定義adpter,將數據源綁定到adpter,當點擊省時,觸發自定義響應事件,改變市,示例如下:
java">{
privateTextViewtextView;
privateSpinnerprovince;
privateSpinnercity;
/**.*/
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//String[]provinces=newString[]{"-省份-","河北省","山西省","北京"};
textView=(TextView)this.findViewById(R.id.textView);
province=(Spinner)this.findViewById(R.id.province);
city=(Spinner)this.findViewById(R.id.city);
//(處理省的顯示)
//將可選內容與ArrayAdapter的連接(從資源數組文件中獲取數據)
ArrayAdapter<CharSequence>adapter=
ArrayAdapter.createFromResource(this,R.array.province,android.R.layout.simple_spinner_item);
//newArrayAdapter<String>(this,android.R.layout.simple_spinner_item,provinces);
//設置下拉列表的風格
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//將數據綁定到Spinner視圖上
province.setAdapter(adapter);
//添加條目被選中監聽器
province.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){
@Override
publicvoidonItemSelected(AdapterView<?>parent,Viewview,intposition,longid){
//parent既是province對象
Spinnerspinner=(Spinner)parent;
Stringpro=(String)spinner.getItemAtPosition(position);
//(處理省的市的顯示)
//將默認值與ArrayAdapter連接(從資源數組文件中獲取數據)
ArrayAdapter<CharSequence>cityAdapter=ArrayAdapter.createFromResource
(MainActivity.this,R.array.citydefault,android.R.layout.simple_spinner_item);
//newArrayAdapter<CharSequence>
//(MainActivity.this,android.R.layout.simple_spinner_item,cities);
//獲取所在省含有哪些市(從資源數組文件中獲取數據)
if(pro.equals("河北省")){
cityAdapter=ArrayAdapter.createFromResource
(MainActivity.this,R.array.hb,android.R.layout.simple_spinner_item);
}elseif(pro.equals("北京市")){
cityAdapter=ArrayAdapter.createFromResource
(MainActivity.this,R.array.bj,android.R.layout.simple_spinner_item);
}elseif(pro.equals("山西省")){
cityAdapter=ArrayAdapter.createFromResource
(MainActivity.this,R.array.shx,android.R.layout.simple_spinner_item);
}
//綁定數據到Spinner(City)上
city.setAdapter(cityAdapter);
}
@Override
publicvoidonNothingSelected(AdapterView<?>parent){
}
});
}
}
C. 如何更改android spinner 背景
1、准備兩張圖片,並做好9.png
2、在drawable中定義spinner_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true"
android:drawable="@drawable/spinner_press" /><!--按下時效果-->
<item android:state_pressed="false"
android:drawable="@drawable/spinner" /><!--默認效果-->
</selector>
3、style中定義
<!-- spinner -->
<style name="spinner_style">
<item name="android:background">@drawable/spinner_selector</item>
<item name="android:paddingLeft">5dip</item>
</style>
4、調用
<Spinner
android:id="@+id/field_item_spinner_content"
style="@style/spinner_style"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:animationCache="true"
android:drawSelectorOnTop="true" />
5、在layout中定義simple_spinner_item.xml
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:paddingLeft="5dip"
android:paddingRight="5dip"
android:gravity="center_vertical"
android:textColor="#808080"
android:singleLine="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
6、java代碼
ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext, R.layout.simple_spinner_item);
String level[] = getResources().getStringArray(R.array.affair_level);//資源文件
for (int i = 0; i < level.length; i++) {
adapter.add(level[i]);
}
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
D. android spinner怎麼用
android中的spinner控制項是表示下拉菜單的意思,按照如下步驟使用:
1、首先使用Android studio創建一個項目,如下圖:

4、最後去類中綁定控制項,並添加數據即可使用。
E. 【Android】自定義Spinner控制項及其使用
一、簡單使用
1. 寫選項值
在res/values/文件夾下新建一個 arrays.xml 文件:
2. 在界面文件中添加Spinner控制項
activity_main.xml 文件:
2.1 dropdown模式
效果:
2.2 dialog模式
效果:
二、自定義dropdown樣式
1. 修改點擊樣式和下拉框樣式
在res/drawable/文件夾下新建兩個文件:
(1)shape_for_custom_spinner.xml 文件(用來定義下拉框的樣式):
(2)selector_for_custom_spinner文件(用來定義Spinner控制項本身的樣式,帶選擇器,有點擊效果):
在界面文件中的Spinner控制項中引用它們:
效果:
2. 增加下劃線
在res/values/文件夾下新建一個style.xml文件:
說明: (1)customTheme——自定義主題樣式,引用它自定義下劃線才能正常顯示。 (2)customSpinnerStyle——自定義的Spinner樣式,和上面的主題樣式一樣在界面文件中引用。 (3)android:divider——分割線顏色。 (4)android:dividerHeight——分割線寬度。
在界面文件中的Spinner控制項中引用它:
效果:
三、動態配置Spinner選項
1. 刪除界面文件中引入的字元串組
即,刪除這一行:
2. 增加一個自定義的layout文件來配置列表樣式
在res/layout/文件夾下新建一個item_for_custom_spinner.xml文件:
3. 在Java文件中對Spinner控制項進行配置
MainActivity.java文件:
說明: 不想自己自定義列表樣式可以選擇直接使用Android自帶的support_simple_spinner_dropdown_item 效果:
四、Spinner選擇事件
1. 增加一個簡單的選擇監聽器
可以發現有兩個問題: (1)初始化監聽器的時候事件被調用了。 (2)重復點擊同一選項事情不會被重復調用。
2. 不希望監聽器動作初始化時就被調用
辦法很簡單,就是定義一個flag用來確認監聽器是否是第一次被調用,是則忽略它:
這樣一來,界面初始化時就不會出現監聽器動作被執行了一次的情況了。
3. 不希望重復點擊同一選項時沒有動作
需要重寫Spinner控制項的部分代碼。
(1)在java/com.example.myapplication/文件夾下新建一個ReSpinner.java文件:
(2)替換掉界面文件中的控制項根名稱,其他什麼都不用動: 將
改為
這樣一來,重復點擊同一事件,也能正常多次觸發監聽器動作了。
五、自定義dialog樣式
經過上面的修改,基本已經完成了對dropdown模式下的樣式自定義和監聽器動作自定義了,將spinnerMode改回dialog,增加一個prompt標簽,增加dialog的標題:
(1)先在res/values/strings.xml文件中定義一個標題(必須步驟):
(2)再在邊界文件中引用它:
F. android中如何將下拉列表中獲取的值放到其他函數中
1.下拉列表使用Spinner。
2.布局:
<Spinner android:id="@+id/Spinner01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</Spinner>
3.實現
1)新增選擇內容:String[] m={"A型","B型","O型","AB型","其他"};
2)初始化設配器:
private ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,m);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //設置下拉列表的風格
spinner.setAdapter(adapter);//將adapter 添加到spinner中
spinner.setOnItemSelectedListener(new SpinnerSelectedListener()); //添加事件Spinner事件監聽
3)新建Spinner監聽器
class SpinnerSelectedListener implements OnItemSelectedListener{
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
view.setText("你選擇的值:"+m[arg2]);//設置編輯框為獲取到的選擇值
}
public void onNothingSelected(AdapterView<?> arg0) {
}
}
