Android修改spinner样式

本文介绍了如何修改Android spinner的默认样式,包括去除背景、设置点击效果、定义样式以及自定义文字样式,通过创建style资源、布局文件和适配器来实现个性化定制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近做界面用到了spinner控件,直接用的话真心挺丑的···现在修改spinner未点击时展示的样子

我用到的要求比较低,直接去掉背景就可以了,若是想有点击效果则自定义一个selector

向这样

1

  、准备两张图片,并做好9.png
Android <wbr>自定义 <wbr>spinner <wbr>(背景、字体颜色)


  、在drawable中定义 spinner_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
      <item android:state_pressed="true"    
            android:drawable="@drawable/spinner_press" /><!--按下时效果-->  
      <item android:state_pressed="false"    
            android:drawable="@drawable/spinner" /><!--默认效果-->    
</selector>
此段内容来源 http://blog.sina.com.cn/s/blog_3e333c4a010151cj.html

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值