A. 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){
}
});
}
}
B. spinner內的字體大小怎麼設置
spinner雖然沒有android:textSize的屬性,但是可以設置style
例如:<Spinner
android:id="@+id/order_change_spinner"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="30"
style="@style/life_spinner_style"/>我測試過,是可以改變字體大小的
C. Android涔嬩笅鎷夋嗛夋嫨浣跨敤紺轟緥
鍦ˋndroid寮鍙戜腑錛屽壋寤轟竴涓鐩磋備笖鍔熻兘涓板瘜鐨勪笅鎷夋嗭紙Spinner錛夋槸鑷沖叧閲嶈佺殑銆傝╂垜浠閫愭ユ帰緔㈠備綍鍦╔ML甯冨矓鍜孞ava浠g爜涓瀹炵幇榪欎釜鍔熻兘錛屼互鍙婂備綍鐩戝惉閫変腑欏瑰拰鑷瀹氫箟閫傞厤鍣ㄤ互婊¤凍澶嶆潅闇奼傘
棣栧厛錛岃╂垜浠鍦╔ML甯冨矓鏂囦歡涓瀹氫箟Spinner鍜屼竴涓鍩虹鐨勯傞厤鍣ㄣ傚湪<Spinner>鍏冪礌涓錛岃劇疆鍏跺藉害鍜岄珮搴︿負鑷閫傚簲錛
```xml
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
```
鎺ヤ笅鏉ワ紝鐢↗ava浠g爜鏉ュ炲己榪欎釜緇勪歡銆傚湪浣犵殑Activity鎴朏ragment涓錛岄氳繃findViewById()鑾峰彇Spinner瀹炰緥錛岀劧鍚庤劇疆涓涓獮rrayAdapter錛屼嬌鐢ˋrrayAdapter鐨勬瀯閫犲嚱鏁頒紶鍏ヤ笂涓嬫枃銆佸竷灞璧勬簮鍜屾暟鎹錛
```java
import ... ArrayAdapter;
ArrayAdapter spinnerAdapter;
List data = Arrays.asList("閫夐」1", "閫夐」2", "閫夐」3");
spinner = findViewById(R.id.spinner);
spinnerAdapter = new ArrayAdapter>(this, android.R.layout.simple_spinner_item, data);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(spinnerAdapter);
```
紜淇濅綘鐨勯傞厤鍣ㄨ兘澶熸樉紺哄氭牱鍖栫殑鏁版嵁鍜岃嚜瀹氫箟甯冨矓錛岃繖鏍蜂綘鍙浠ユ牴鎹闇瑕佽皟鏁翠笅鎷夋嗙殑澶栬傘
褰撲綘甯屾湜鐢ㄦ埛鍦ㄤ笅鎷夋嗕腑榪涜岄夋嫨鏃訛紝闇瑕佷負Spinner璁劇疆涓涓鐩戝惉鍣ㄣ傚湪onCreate()鏂規硶涓錛屽疄鐜癘nItemSelectedListener鎺ュ彛錛屼互鍝嶅簲閫変腑欏圭殑鏀瑰彉錛
```java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView parent, View view, int position, long id) {
String selectedValue = spinnerAdapter.getItem(position);
Toast.makeText(MainActivity.this, "閫夋嫨鐨勫: " + selectedValue, Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView parent) {
// 鏃犻変腑欏瑰勭悊
}
});
}
```
瑕佷富鍔ㄨ幏鍙栭変腑鐨勫礆紝浣犲彲浠ョ洿鎺ヨ皟鐢╯pinner.getSelectedItem()鑾峰彇鏂囨湰錛屾垨鑰呬嬌鐢╯pinner.getSelectedItemPosition()鑾峰彇浣嶇疆銆傚姟蹇呭勭悊鏃犻変腑欏圭殑杈圭紭鎯呭喌錛
```java
int currentPosition = spinner.getSelectedItemPosition();
String selectedItem = (currentPosition != AdapterView.INVALID_POSITION) ? spinner.getSelectedItem() : null;
```
涓轟簡鍒濆嬪寲榛樿ら変腑欏癸紝浣犲彲浠ヨ劇疆setSelection()錛屾瘮濡傚皢絎浜屼釜閫夐」璁劇疆涓洪粯璁わ細
```java
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
spinner.setSelection(1);
}
});
```
榪欐牱錛屼綘涓嶄粎鍒涘緩浜嗕竴涓鍩烘湰鐨勪笅鎷夋嗭紝榪樻坊鍔犱簡鐢ㄦ埛浜や簰鍜岄変腑欏圭殑鐩戝惉銆傝嚜瀹氫箟閫傞厤鍣ㄥ厑璁鎬綘鏍規嵁闇瑕佸睍紺哄嶆潅鏁版嵁錛岃岀洃鍚鍣ㄥ垯紜淇濅簡閫夋嫨浜嬩歡鐨勫勭悊銆傚湪瀹為檯欏圭洰涓錛岃板緱鏍規嵁搴旂敤闇奼傚瑰竷灞銆佹牱寮忓拰鏁版嵁榪涜岃皟鏁達紝浠ユ彁鍗囩敤鎴蜂綋楠屻