项目中界面,有几个数值不允许用户输入,只能在下拉列表中选择项目,一开始想过自定义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: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>这样就顺利的完成了需求,改变了默认的样式为圆角,并且文字居中,颜色为白色。截图如下:
(红色的为了保密所需要,欢迎各位前辈指出不足,或者更好的办法)。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/nihaoqiulinhe/article/details/48131861