效果图:
一张图片(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>
<?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) { } }); } }