自定義Spinner七兜,需要定制的有默認(rèn)背景丸凭、按下背景,顯示時(shí)每一項(xiàng)的樣式以及彈出時(shí)每一項(xiàng)的樣式四個(gè)方面腕铸。下面舉個(gè)簡(jiǎn)單例子惜犀。
</br>
1、準(zhǔn)備兩張圖片狠裹,處理為.9png虽界,分別為spinner.9.png和spinner_press.9.png,作為背景涛菠,如下圖所示
spinner.9.png
spinner_press.9.png
2莉御、在drawable中定義spinner_selector.xml,定義兩種狀態(tài)分別對(duì)應(yīng)上面兩種顏色
<?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" /><!--按下時(shí)效果-->
<item android:state_pressed="false"
android:drawable="@drawable/spinner" /><!--默認(rèn)效果-->
</selector>
3俗冻、定義一個(gè)style礁叔,也可以直接放在布局中,我為了復(fù)用拿出來單獨(dú)定義了
<!-- spinner -->
<style name="spinner_style">
<item name="android:background">@drawable/spinner_selector</item>
<item name="android:paddingLeft">5dip</item>
</style>
4迄薄、在布局的Spinner中引用上述style
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Spinner
android:id="@+id/field_item_spinner_content"
style="@style/spinner_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_margin="10dp" />
</RelativeLayout>
5琅关、每一項(xiàng)的樣式 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:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingLeft="5dip"
android:paddingRight="5dip"
android:singleLine="true"
android:textColor="#808080" />
6、彈出時(shí)的每一項(xiàng)顯示布局 my_drop_down_item.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dip"
android:textColor="#000000"
android:textSize="15dp" >
</TextView>
7讥蔽、定義一個(gè)字符數(shù)組涣易,作為數(shù)據(jù)顯示
<string-array name="meinv">
<item>美女1</item>
<item>美女2</item>
<item>美女3</item>
<item>美女4</item>
<item>美女5</item>
<item>美女6</item>
<item>美女7</item>
</string-array>
8、Activity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Spinner spinner = (Spinner) findViewById(R.id.field_item_spinner_content);
//資源轉(zhuǎn)[]
String meinv[] = getResources().getStringArray(R.array.meinv);
//構(gòu)造ArrayAdapter
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.simple_spinner_item, meinv);
//設(shè)置下拉樣式以后顯示的樣式
adapter.setDropDownViewResource(R.layout.my_drop_down_item);
spinner.setAdapter(adapter);
}
}
9冶伞、測(cè)試效果
自定義Spinner.gif