Spinner
下拉选择框控件,默认样式在控件的右边有一个小箭头指示用户点击可以选择,有下拉选择框和弹窗选择两种模式。
xml属性
属性 | 解释 |
---|---|
entries | spinner的数据来源,使用res/values/arrays中的string-array字符串数组 |
spinnerMode | 下拉模式,有两种:dropdown和dialog |
prompt | 当spinnerMode模式为dialog时,设置弹出的弹窗的标题 |
dropDownHorizontalOffset | 设置下拉框和spinner控件的水平距离(发现并不起作用) |
dropDownVerticalOffset | 设置下拉框和spinner控件的垂直距离,默认是从spinner的上边框开始的 |
dropDownWidth | 设置下拉框的宽度 |
使用方法
基本用法
//下拉选择框模式;
<Spinner
android:id="@+id/spinner1_sp"
android:layout_width="200dp"
android:layout_height="50dp"
android:entries="@array/spinnerData"
android:spinnerMode="dropdown"
/>
//弹窗选择模式;
<Spinner
android:id="@+id/spinner1_sp"
android:layout_width="200dp"
android:layout_height="50dp"
android:entries="@array/spinnerData"
android:spinnerMode="dialog"
android:prompt="弹窗标题"
/>
在java代码中使用如下:
//声明Spinner控件;
Spinner mSpinner1Sp;
//Spinner控件的选择项的点击事件处理;
mSpinner1Sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Log.e("===MockingJay===","选择了第:" + position "个位置的选项");
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
复杂用法
自定义Spinner控件的样式
在实际项目中,我们可能需要给Spinner控件加一个边框,使用background这个属性配合shape的Drawable可以实现加边框的效果,但是加了边框之后,右边的小箭头就会消失掉,那么,我们可以使用layer-list的Drawable来实现既加了边框又有小箭头的效果。
//实现给Spinner添加边框以及不损失右边的小箭头的效果;
//其中bitmap中的图片就是自己要显示的右边小箭头的图标,也可以显示为其他自定义的图标;
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<corners android:radius="5dp" />
<stroke
android:width="1dp"
android:color="#FF0000" />
</shape>
</item>
<item>
<bitmap
android:gravity="end"
android:src="@drawable/xialajiantou" />
</item>
</layer-list>
自定义下拉选择框的样式
Spinner控件的父控件是如下关系:
ViewGroup
-> AdapterView
-> AbsSpinner
-> Spinner
也就是说Spinner和ListView一样,是可以使用适配器来自定义样式的。
-
-
-
-
-
-
-
-
-
--------------------------to be continued---------------------------