Spinner的用法介紹(相容性問題)
阿新 • • 發佈:2019-02-14
今天碰到一個spinner在華為mate10上顯示異常的問題。如下圖
正常顯示應該是這樣的 如下圖
回顧下spinner的用法
一.佈局檔案中配置
<Spinner
android:paddingRight="20dp"
style="@style/spinner_bg"
android:id="@+id/Setting_spinner"
android:layout_width="80dp"
android:layout_height="25dp"
android:layout_marginLeft="15dp"
android:layout_marginTop="2dp"
/>
樣式是自定義的樣式,更改了預設的背景。
二,新增一個下拉列表項的list,這裡新增的項就是下拉列表的選單項
list.add("5 秒");
list.add("10 秒");
list.add("30 秒");
list.add("1分鐘");
list.add("5分鐘");
list.add("10分鐘" );
list.add("30分鐘");
三 為下拉列表定義一個介面卡,這裡就用到裡前面定義的list。
final ArrayAdapter adapter = new ArrayAdapter(this,
R.layout.simple_spinner, list);
上面的simple_spinner也是一個自定義的佈局檔案,這樣的目的是可以更改選單項內容的字型顏色 大小等內容
simple_spinner的全部內容
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android ="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:ellipsize="marquee"
android:layout_alignParentLeft="true"
android:gravity="center"
android:textColor="#ffffff"
android:textAlignment="inherit"/>
四,為介面卡設定下拉列表下拉時的選單樣式。
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
五 將介面卡新增到下拉列表上
setting_spinner.setAdapter(adapter);
六 設定點選事件
setting_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
time_interval = (String) adapter.getItem(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
注意上面的第四部,simple_spinner_dropdown_item是系統自帶的佈局檔案,咱們剛開始談論的問題就是因為這個引起的,將這個佈局裡面的內容拷貝出來,自定義一個佈局檔案,將內容拷貝進去
如下
adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item);
simple_spinner_dropdown_item的內容
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:singleLine="true"
android:layout_alignParentRight="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"/>
再次執行軟體,發現問題搞定。。