对于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; @Override protected 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
时间: 2024-10-09 03:03:55