时间:2022-09-26 09:34:17 | 栏目:Android代码 | 点击:次
下拉列表的展示方式有两种,一种是在当前下拉框的正下方展示列表,此时把spinnerMode属性设置为dropdown;另一种是在页面中部以对话框形式展示列表,此时把SpinnerMode属性设置为dialog。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Spinner android:layout_width="200dp" android:id="@+id/spinner" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:spinnerMode="dropdown" android:dropDownVerticalOffset="45dp" android:background="@null"/> </LinearLayout>
<?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="45dp" android:background="@android:color/holo_blue_dark" android:textSize="14sp" android:textColor="@android:color/holo_red_light" android:gravity="center"/>
<?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="45dp" android:textColor="@android:color/black" android:textSize="14sp" android:gravity="center"/>
public class MainActivity extends AppCompatActivity{ private String[] starArray = {"水星","金星","地球","火星","木星","土星"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initSpinner(); } private void initSpinner(){ //声明一个下拉列表的数组适配器 ArrayAdapter<String> starAdapter = new ArrayAdapter<String>(this,R.layout.item_select,starArray); //设置数组适配器的布局样式 starAdapter.setDropDownViewResource(R.layout.item_dropdown); //从布局文件中获取名叫sp_dialog的下拉框 Spinner sp = findViewById(R.id.spinner); //设置下拉框的标题,不设置就没有难看的标题了 sp.setPrompt("请选择行星"); //设置下拉框的数组适配器 sp.setAdapter(starAdapter); //设置下拉框默认的显示第一项 sp.setSelection(0); //给下拉框设置选择监听器,一旦用户选中某一项,就触发监听器的onItemSelected方法 sp.setOnItemSelectedListener(new MySelectedListener()); } class MySelectedListener implements AdapterView.OnItemSelectedListener{ @Override public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { Toast.makeText(MainActivity.this,"您选择的是:"+starArray[i],Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> adapterView) { } } }
只需要在style中添加如下代码即可
添加样式
<style name="XSpinnerStyle" parent="android:Widget.ListView.DropDown"> <!-- 分隔线颜色 --> <item name="android:divider">#000000</item> <item name="android:dividerHeight">1dp</item> </style>
然后在AppTheme中调用
<item name="android:dropDownListViewStyle">@style/XSpinnerStyle</item>
但注意,该分割线只有是dropdown样式时才会显示