Android 自定义下拉框的实现 Spinner

下拉框布局  a_spinner_checked_text.xml

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:padding="8dp"
android:singleLine="true"
android:textColor="#00f"
android:textSize="18sp" >

</CheckedTextView>

下拉框内容布局  a_spinner_item_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff"
android:padding="8dp"
>

<TextView
android:id="@+id/spinner_item_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:textColor="#00f"
android:textSize="14sp" />

<ImageView
android:id="@+id/spinner_item_checked_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:src="@drawable/a_check_unselect" />

</RelativeLayout>

首页布局 activity_main.xml

<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"
tools:context="com.example.spinner.MainActivity" >

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:layout_margin="15dp">

<TextView
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:gravity="center"
android:text="民族"
android:textColor="#000"
android:textSize="18sp" />

<Spinner
android:id="@+id/add_minzsp"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_weight="1" />
</LinearLayout>

</LinearLayout>

MainActivity 代码

public class MainActivity extends Activity {
private Spinner minzuSpinner;

private String[] minzuStrings = { "请选择", "汉族", "维吾尔族", "回族", "哈萨克族", "蒙古族",
"柯尔克孜族", "塔吉克族", "壮族", "乌孜别克族" };

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

minzuSpinner = (Spinner) findViewById(R.id.add_minzsp);
SpinnerAdapter adapter = new SpinnerAdapter(this,
R.layout.a_spinner_checked_text, minzuStrings, minzuSpinner);
adapter.setDropDownViewResource(R.layout.a_spinner_item_layout);
minzuSpinner.setAdapter(adapter);

}

}

用到的SpinnerAdapter代码

public class SpinnerAdapter extends ArrayAdapter<String> {

Context context;
String[] items = new String[] {};
Spinner spinner;

public SpinnerAdapter(final Context context,
final int textViewResourceId, final String[] objects,final Spinner spinner) {
super(context, textViewResourceId, objects);
this.items = objects;
this.context = context;
this.spinner=spinner;
}

@Override

public View getDropDownView(int position, View convertView,ViewGroup parent) {

if (convertView == null) {
LayoutInflater inflater = LayoutInflater.from(context);
convertView = inflater.inflate(
R.layout.a_spinner_item_layout, parent, false);
}
TextView label = (TextView) convertView.findViewById(R.id.spinner_item_label);
ImageView check = (ImageView) convertView.findViewById(R.id.spinner_item_checked_image);
label.setText(items[position]);
if (spinner.getSelectedItemPosition() == position) {
convertView.setBackgroundColor(context.getResources().getColor(R.color.spinner_green));
check.setImageResource(R.drawable.a_check_select);
} else {
convertView.setBackgroundColor(context.getResources().getColor(R.color.spinner_light_green));
check.setImageResource(R.drawable.a_check_unselect);
}
return convertView;
}

}

结果如图:

时间: 2024-10-05 23:27:36

Android 自定义下拉框的实现 Spinner的相关文章

android中自定义下拉框(转)

android自带的下拉框好用不?我觉得有时候好用,有时候难有,项目规定这样的效果,自带的控件实现不了,那么只有我们自己来老老实实滴写一个新的了,其实最基本的下拉框就像一些资料填写时,点击的时候出现在编辑框的下面,然后又很多选项的下拉框,可是我在网上找了一下,没有这种下拉框额,就自己写了一个,看效果图先: ,这个是资料填写的一部分界面,三个下拉框,选择故乡所在地: 点击之后弹出下拉框,选择下面的选项: 三个下拉框时关联的,第一个决定了第二数据内容,第二个决定了第三个数据内容,如果三个全部选好之后

Android 之 下拉框(Spinner)的使用-转

下拉列表 Spinner. Spinner的使用,可以极大提高用户的体验性.当需要用户选择的时候,可以提供一个下拉列表将所有可选的项列出来.供用户选择. Demo如下,可以留作参考 一.使用数组作为数据源 1.新建一个android的工程 2.工程的layout.xml文件如下:声明一个TextView控件和一个Spinner控件 Xml代码   <?xml version="1.0" encoding="utf-8"?> <LinearLayou

CSS3自定义下拉框

原文:CSS3自定义下拉框 源代码下载地址:http://www.zuidaima.com/share/1550463655152640.htm 源代码截图:

elect美化自定义下拉框样式

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>张力仪</title></he

Struts2 自定义下拉框标签Tag

自定义标签主要包括三个步骤: 1.编写java类,继承TagSupport类: 2.创建tld文件,影射标签名和标签的java类: 3.jsp页面引入tld. 例子:自定义下拉框标签 如果页面上有下拉选择框,通常最好的解决方法是使用数据字典,因为有可能多个页面 使用同一个下拉框,便于后台统一维护. 自定义Tag类 import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.

Android 自定义下拉刷新ExpandableListView

自定义下拉刷新ExpandableListView,在本文的demo中做的是好友分组列表,可以通过下拉刷新数据.自定义控件是继承了ExpandableListView这个类,接口就是OnScrollListener这样来实现的.接下看看怎样调用这个自定义控件.先看效果图. 本文源码下载:点击 一.实现的效果图 二.看自定义控制类XExpandableListView package com.org.xlistview; import com.example.pullrefresh.R; impo

Android自定义下拉刷新动画--仿百度外卖下拉刷新

好久没写博客了,小编之前一段时间一直在找工作,从天津来到了我们的大帝都,感觉还不错.好了废话不多说了,开始我们今天的主题吧.现如今的APP各式各样,同样也带来了各种需求,一个下拉刷新都能玩出花样了,前两天订饭的时候不经意间看到了"百度外卖"的下拉刷新,今天的主题就是它–自定义下拉刷新动画. 看一下实现效果吧: 动画 我们先来看看Android中的动画吧: Android中的动画分为三种: Tween动画,这一类的动画提供了旋转.平移.缩放等效果. Alpha – 淡入淡出 Scale

自定义下拉框样式,利用prototype制作

<script type="text/javascript" src="js/jquery-1.7.2.min.js" ></script> <script type="text/javascript"> // function createDropdown(ele){ this.dropdown=ele; this.val=''; this.index=-1;//默认值时-1 this.palceholder

点击自定义下拉框以外的区域关闭下拉框

1.写一个下拉框 html部分: <div class="pull-left service-type mt-36"> <div id="currentService">第一<img style="margin-left: 5px" src="arrow.png"/></div> <ul class="service-option hidden">