Android 实例讲解 Spinner样式修改
16lz
2021-01-23
对于android项目开发来说,常常会用到Spinner实现下拉框的效果。而对于Spinner加载适配器的方法有多种:
1.直接加载android自带的ArrayAdapter,SimpleAdapter;
2.自定义继承BaseAdapter的适配器。
对于适配器加载自定义的xml布局文件,修改该Spinner样式较简单,就是在定义的xml布局文件中修改显示的样式就可以。但对于加载android自带的xml布局文件,有时会出现不是项目所需要的效果。主要问题有下拉几个:
1.Spinner本身背景显示样式;
2.Spinner中文本框显示样式;
3.Spinner下拉菜单框显示样式;
下面通过实例解决上面提出的几个样式问题:
<span style="font-size:18px;">package com.example.spinnerdemo;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.Spinner;public class MainActivity extends Activity {private Spinner spinner;private Spinner spinnerTwo;private String[] datas;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);spinner = (Spinner) this.findViewById(R.id.spinner);spinnerTwo = (Spinner) this.findViewById(R.id.spinnerTwo);datas = new String[] { "张三", "李四", "王五", "赵六" };//原生态样式,以android.R.layout.simple_spinner_dropdown_item为例,其他修改类似ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, datas);adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);spinner.setAdapter(adapter);//根据原生态样式改变而来的自定义样式//Spinner中文框显示样式ArrayAdapter<String> adapterTwo = new ArrayAdapter<String>(this,R.layout.my_simple_spinner_self_item, datas);//Spinner下拉菜单显示样式adapterTwo.setDropDownViewResource(R.layout.my_simple_spinner_dropdown_item);spinnerTwo.setAdapter(adapterTwo);}}</span>
由MainActivity.java中以android.R.layout.simple_spinner_dropdown_item为例,其中android.R.layout.simple_spinner_dropdown_item系统自身的xml布局文件如下:
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><!--/* //device/apps/common/assets/res/any/layout/simple_spinner_item.xml**** Copyright 2008, The Android Open Source Project**** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at **** http://www.apache.org/licenses/LICENSE-2.0 **** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License.*/--><CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerDropDownItemStyle" android:singleLine="true" android:layout_width="match_parent" android:layout_height="?android:attr/dropdownListPreferredItemHeight" android:ellipsize="marquee" android:textAlignment="inherit"/></span>而我们需要实现上面需要实现的样式,只需在其基础上进行修改就可以了。
1.修改Spinner本身背景色
a. 设置背景色选择器spinner_selector.xml
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@color/blue" /> <item android:state_focused="true" android:drawable="@color/blue" /> <item android:drawable="@color/white" /> </selector> </span>
b. 颜色设置 color.xml
<span style="font-size:18px;"><resources><color name="white">#FFFFFF</color><color name="blue">#0000FF</color></resources></span>c.背景色设置activity_main.xml
<span style="font-size:18px;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.spinnerdemo.MainActivity$PlaceholderFragment" > <Spinner android:id="@+id/spinner" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" /> <!-- Spinner自身背景色需设置:android:background="@drawable/spinner_selector" --> <Spinner android:id="@+id/spinnerTwo" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:gravity="center_vertical" /></LinearLayout></span>2.Spinner中文本显示样式
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><!--/* //device/apps/common/assets/res/any/layout/simple_spinner_item.xml**** Copyright 2008, The Android Open Source Project**** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at **** http://www.apache.org/licenses/LICENSE-2.0 **** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License.*/--><CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerDropDownItemStyle" android:textColor="#0000FF" android:gravity="center" android:singleLine="true" android:layout_width="match_parent" android:layout_height="40dp" android:ellipsize="marquee" android:textAlignment="inherit" android:background="#FFFFFF"/></span>
3.Spinner下拉框显示样式
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><!--/* //device/apps/common/assets/res/any/layout/simple_spinner_item.xml**** Copyright 2008, The Android Open Source Project**** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at **** http://www.apache.org/licenses/LICENSE-2.0 **** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License.*/--><CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/text1" style="?android:attr/spinnerDropDownItemStyle" android:layout_width="match_parent" android:layout_height="40dp" android:background="#00FF00" android:ellipsize="marquee" android:gravity="center" android:singleLine="true" android:textAlignment="inherit" android:textColor="#FF0000" android:textSize="24sp" /></span>
上面就是Spinner样式设置的所有内容,可以试试看。
源码地址:http://download.csdn.net/detail/a123demi/7931263
更多相关文章
- Android自定义字体样式Typeface的三种技术方案:Java代码的setType
- Android样式和主题
- Android设计模式系列-适配器模式
- Android之Adapter:连接后端数据和前端显示的适配器接口
- 【Android】Android中两种常用布局(LinearLayout和RelativeLayout
- 【边做项目边学Android】知识点:Adapter适配器
- Android之ListActivity:布局与数据绑定