1. 程式人生 > >android 更改spinner預設樣式

android 更改spinner預設樣式

效果圖:


一張圖片(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) {

            }
        });


     }
}