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);
}
});
```
杩欐牱锛屼綘涓崭粎鍒涘缓浜嗕竴涓锘烘湰镄勪笅𨰾夋嗭纴杩樻坊锷犱简鐢ㄦ埛浜や簰鍜岄変腑椤圭殑鐩戝惉銆傝嚜瀹氢箟阃傞厤鍣ㄥ厑璁镐綘镙规嵁闇瑕佸𪾢绀哄嶆潅鏁版嵁锛岃岀洃钖鍣ㄥ垯纭淇濅简阃夋嫨浜嬩欢镄勫勭悊銆傚湪瀹为檯椤圭洰涓锛岃板缑镙规嵁搴旂敤闇姹傚瑰竷灞銆佹牱寮忓拰鏁版嵁杩涜岃皟鏁达纴浠ユ彁鍗囩敤鎴蜂綋楠屻