最近做界面用到了spinner控件,直接用的话真心挺丑的···现在修改spinner未点击时展示的样子
我用到的要求比较低,直接去掉背景就可以了,若是想有点击效果则自定义一个selector
向这样
1
2
现在可以写style样式了,在res/values下创建styles.xml文件,添加内容:
<style name="spinner_style">
<item name="android:background">@null</item>
<item name="android:paddingLeft">5dip</item>
</style>
根据自己的需求定义属性,如果需要上面的点击背景则background的值为@drawable/spinner_selector
3
在需要使用spinner的布局文件中添加
<Spinner
android:id="@+id/user_cartype"
android:layout_width="@dimen/edit_width"
android:layout_height="@dimen/edit_height"
style="@style/spinner_style"
/>
这样设置完成后spinner就呈现出我们想要的背景样式
4
在代码里给spinner添加显示内容
ArrayAdapter<CharSequence> carTypeAdapter=ArrayAdapter.createFromResource(context,
R.array.cartype_array,R.layout.simple_spinner_item);
其中第二个参数是点击后展开列表的内容集合,第三个参数是未点击时显示的内容布局,就是没有点击时显示的textView,要想修改未点击时显示的文字样式,则要自定义这个布局
carTypeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//设置点击后显示列表每一项的布局
carTypeSpinner.setAdapter(carTypeAdapter);//给spinner设置adapter
5
修改未点击时文字样式
layout中创建simple_spinner_item.xml(其它名字也可以,在4中的代码中记得修改就可以了),添加内容
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:ellipsize="marquee"
>
</TextView>
注意:它的id一定要是@android:id/text1,若是修改了则没有效果
在这里根据需要修改即可
6
修改点击后显示的列表的文字样式,就要自定义simple_spinner_dropdown_item了
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerDropDownItemStyle"
android:singleLine="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:layout_gravity="center_vertical"
android:textColor="#84DB18"
android:textSize="12sp"/>
同5中自定义simple_spinner_item一样,最后别忘了在引用的地方修改来源将android.r.layout换成项目的R就可以了
最后在贴一下这两篇文字
http://blog.sina.com.cn/s/blog_3e333c4a010151cj.html
http://bbs.9ria.com/thread-190296-1-1.html