对于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

更多相关文章

  1. Android自定义字体样式Typeface的三种技术方案:Java代码的setType
  2. Android样式和主题
  3. Android设计模式系列-适配器模式
  4. Android之Adapter:连接后端数据和前端显示的适配器接口
  5. 【Android】Android中两种常用布局(LinearLayout和RelativeLayout
  6. 【边做项目边学Android】知识点:Adapter适配器
  7. Android之ListActivity:布局与数据绑定

随机推荐

  1. Android(安卓)VideoView 循环播放视频
  2. Android(安卓)TVBox开发:logcat常用命令,四
  3. Android(安卓)判断App运行在模拟器还是真
  4. Android(安卓)学习项目开发案例
  5. [置顶] Android(安卓)设置铃声分析
  6. android : 修改frameworks/base/ 代码需
  7. Android(安卓)retrofit2+OkHttp3的初尝试
  8. Android自定义Button按钮显示样式
  9. Android(安卓)okHttp 实战(三):okHttp网络请
  10. Android开发系列之搭建开发环境