android 更改spinner預設樣式
阿新 • • 發佈:2019-01-03
效果圖:
一張圖片(Spinner背景圖片,帶白色箭頭的透明圖片),一個Activity佈局(背景為藍色)和兩個樣式佈局
1.Activity佈局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:background="@color/color_blue_dark" android:layout_height="match_parent"> <!--Spinner背景是一個透明的的矩形,上面附有一個白色箭頭--> <Spinner android:id="@+id/test_spinner" android:layout_width="200dp" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:background="@drawable/spinner_down" > </Spinner> </LinearLayout>
2.adapter_mytopactionbar_spinner 可以更改預設樣式的佈局
<?xml version="1.0" encoding="utf-8"?> <!--spinner未展開的文字顯示佈局,這裡邊id必須是 android:id="@android:id/text1",--> <!--因為原始碼中spinner的textView的id就是這個,如果不這樣設定,無法改變spinner的樣式--> <TextView android:id="@android:id/text1" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:singleLine="true" android:textColor="@color/color_white" android:textSize="18dp" />
3.
adapter_mytopactionbar_spinner_item 設定spinner展開的Item佈局
<?xml version="1.0" encoding="utf-8"?> <!--spinner展開後的Item佈局--> <TextView android:id="@+id/spinner_textView" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:padding="10dp" android:textSize="16sp"> </TextView>
Activity 中
public class SpinnerActivity extends Activity {
private Spinner spinner;
private static String[] mArrayString = null;
private ArrayAdapter<String> mArrayAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_spinner_layout);
spinner=(Spinner)findViewById(R.id.test_spinner);
// 初始化spinner中顯示的資料
mArrayString = new String[]{"android講義","java面向物件","王者歸來"};
// adapter_mytopactionbar_spinner改變了spinner的預設樣式
mArrayAdapter=new ArrayAdapter<String>(this,R.layout.adapter_mytopactionbar_spinner,mArrayString){
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
if (convertView == null){
// 設定spinner展開的Item佈局
convertView = getLayoutInflater().inflate(R.layout.adapter_mytopactionbar_spinner_item, parent, false);
}
TextView spinnerText=(TextView)convertView.findViewById(R.id.spinner_textView);
spinnerText.setText(getItem(position));
return convertView;
}
};
spinner.setAdapter(mArrayAdapter);
// spinner設定監聽
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(SpinnerActivity.this,"你選的是的是第"+position,Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}