Android 自定义spinner文字颜色 和 显示样式

项目中界面,有几个数值不允许用户输入,只能在下拉列表中选择项目,一开始想过自定义dialog或者popupwindow,但是会额外增加很多代码,考虑到现在的工程代码量已经很多了,所以想到了使用google已经开发好的组件spinner组件,这是一个非常好用的系统下拉选项组件,具体的用法我就不多说了,有很多已经总结过了,大概的流程就是先设置spinner控件,如下:

Spinner<
                android:id="@+id/touchprice"
                android:layout_width="190dp"
                android:layout_height="35dp"
                android:layout_marginLeft="10dp"
                android:dropDownWidth="20dp"
                android:prompt="@string/touch" />   <!--这里设置首先显示的是哪个数值 -->

之后可以在代码上,设置默认下拉样式和弹出模式,监听选中的选项,这些都有很多例子可以参考,我的是这样的:

	// 第2个下拉列表,有效日期
		spinner = (Spinner) view.findViewById(R.id.effectivedate);// 将可选内容与ArrayAdapter连接起来
		adapter = new ArrayAdapter<String>(getActivity(),
				android.R.layout.simple_spinner_item, m);</span>
</strong>
		// //设置下拉列表的风格
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

		// 将adapter 添加到spinner中
		spinner.setAdapter(adapter);

		// 添加事件Spinner事件监听
		spinner.setOnItemSelectedListener(new SpinnerSelectedListener());

		// 设置默认值
		spinner.setVisibility(View.VISIBLE);

	}

	// 使用数组形式操作
	class SpinnerSelectedListener implements OnItemSelectedListener {

		@Override
		public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
				long arg3) {
			Toast tst = Toast.makeText(getView().getContext(),
					"您点击了" + m[arg2], Toast.LENGTH_SHORT);
			tst.show();

		}

		@Override
		public void onNothingSelected(AdapterView<?> arg0) {
		}
	}

这样就实现了最基本的系统下拉列表组件,如下:

是不是感觉特别的丑,特别是如下下面我的edittext是要用圆角来显示的话,就显得对比太大了,所以就到了关键的一步,不要使用系统自带的列表项布局文件,也就是上述的这段代码:

// 将可选内容与ArrayAdapter连接起来
		adapter = new ArrayAdapter<String>(getActivity(),
				android.R.layout.simple_spinner_item, m);
		// //设置下拉列表的风格

我们可以替换成我们想要表现的布局格式,下面是我要呈现的样子,就是圆角,然后修改里面默认字体的颜色,改为白色,并且居中显示:

activity_tipsprice_spinner.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:gravity="center"
    android:paddingTop="5dp"
    android:textStyle="bold"
    android:textColor="#FFFFFF"
    android:textSize="14dp"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ellipsize="marquee"/>

这个只是设置下拉的文字样式,如果要圆角的话,必须在spinner组件设置android:background设置圆角的样式,如下:

<Spinner

android:id="@+id/touchprice"

android:layout_width="190dp"

android:layout_height="35dp"

android:layout_marginLeft="10dp"

android:background="@drawable/tipspriceshape"

android:dropDownWidth="20dp"

android:prompt="@string/touch" />

贴出圆角的文件代码,tipspriceshape.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <!-- 填充的颜色 -->
    <solid android:color="#2B2B2B" />
    <!-- 设置按钮的四个角为弧形 -->
    <!-- android:radius 弧形的半径 -->
    <corners android:radius="@dimen/RoundedAmplitude" />

    <gradient
        android:angle="270"
        android:centerColor="#2B2B2B"
        android:endColor="#2B2B2B"
        android:startColor="#2B2B2B" />
    <stroke
        android:width="0.01dp"
        android:color="#FFFFFF">
    </stroke>
</shape>

这样就顺利的完成了需求,改变了默认的样式为圆角,并且文字居中,颜色为白色。截图如下:

(红色的为了保密所需要,欢迎各位前辈指出不足,或者更好的办法)。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-08 00:50:40

Android 自定义spinner文字颜色 和 显示样式的相关文章

(转)Android 自定义 spinner (背景、字体颜色)

Android 自定义 spinner (背景.字体颜色) (2012-07-04 17:04:44)   1.准备两张图片,并做好9.png 2.在drawable中定义spinner_selector.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" &

Android 自定义Adapter 但listview 只显示第一条数据

楼主让这个问题郁闷了一晚上.....在logcat里明明显示adapter的getview方法里的list大于一条数据 ,但posotion却一直是0.....运行后也只显示list[0]里面的数据....最后的最后原来错误出在布局文件上 我以前的是这样的; <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" > <!-- listv

更改android actionbar tab文字颜色

1 在res/values/colors.xml <color name="text_tab_selected">#000000</color> <color name="text_tab_unselected">#886C2A</color> 2 /res/color 定义文件 tab.xml <?xml version="1.0" encoding="utf-8"?&g

Android 自定义Spinner字体、颜色、大小

昨天在公司项目中遇到Spinner颜色,字体,大小的困惑.所以今天也总结一下这方面知识.这个其实很简单,要改变字体,颜色以及大小,无非就是不要用系统自带的样式.自已例外写一个layout调用就行了.我就是这样做的.本文例子还有Spinner两种弹出方式,下拉框以及弹出框.加载数据源的两种方式.下面看代码介绍. 本文项目源码地址:http://download.csdn.net/detail/qq_16064871/8583085 转载请注明出处: http://blog.csdn.net/qq_

Android 自定义Spinner和其下拉窗口

http://www.cnblogs.com/coding-way/p/3549865.html 现效果: 自定义Spinner其实包括两个部分: 第一部分是用来打开下拉列表的按钮,如图,这个绿色背景直接设置Spinner的背景就行,素材文件如下: 里面的文字需要注意下,Spinner控件没有直接修改文字的接口,这个文字实际上是在Adapter中设置,例如: ArrayAdapter<String> adapter = new ArrayAdapter<String>(getCon

android 自定义进度条颜色

先看图 基于产品经理各种自定义需求,经过查阅了解,下面是自己对Android自定义进度条的学习过程!   这个没法了只能看源码了,还好下载了源码, sources\base\core\res\res\  下应有尽有,修改进度条颜色只能找progress ,因为是改变样式,首先找styles.xml 找到xml后,进去找到 [html] view plaincopyprint? <span style="font-size: 18px;">    <style name

Android 自定义 spinner (背景、字体颜色)

转自:http://blog.sina.com.cn/s/blog_3e333c4a010151cj.html 1.准备两张图片,并做好9.png 2.在drawable中定义spinner_selector.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"

android 自定义Dialog背景透明及显示位置设置

先贴一下显示效果图,仅作参考: 代码如下: 1.自定义Dialog public class SelectDialog extends AlertDialog{ public SelectDialog(Context context, int theme) {    super(context, theme);} public SelectDialog(Context context) {    super(context);} @Overrideprotected void onCreate(

django-xadmin自定义widget插件(自定义详情页字段的显示样式)

有时候我们想要修改xadmin详情页字段的显示方式,比如django默认的ImageField在后台显示的是image的url,我们更希望看到image的缩略图:再比如django将多对多字段显示为多选的下拉框或者左右选择栏的方式,向图片展示的这两种: 如果我想要上面这种带搜索功能并且只占一行的效果该如何做呢? 这就需要我们自定义widget插件了. 那么什么是widget插件呢? django admin在渲染form表单时,会根据字段的类型(ImageField.DateTtimeField