自定义Spinner样式以及实现hint效果
来源:互联网 发布:苏格拉底怎么死的 知乎 编辑:程序博客网 时间:2024/06/05 13:06
android中有个Spinner控件,也就是下拉控件。但是初始的样式比较不好看,所以想着更改下样式。这样就不需要一直用EditText+popupwindow的方式来实现这种效果,会比较这种方式更简单一些。我们来看下实现的效果:
1、正如网上所说的需要准备一张.9图。
正常的png图片
制作成.9后的图片
这里稍微提一下在android studio中制作点9图的巨方便的方法,但是需要注意的有两点:
1、复制图片到drawable文件夹中(你放图片的文件夹),选中这张图片,右击弹出菜单,点击create 9-patch file…
2、双击产生的.9file图片,Android studio 会自动使用内置的.9图片制作工具打开这张图片
3、开始制作,在你需要拉伸的地方画黑线
4、然后保存,最后删掉原来的图片(如果不删除肯定不行啊)
需要注意的是:as中对点9图的要求比较苛刻,后缀一定要为.9.png还有就是你的原图不能是背景透明的图片。最好你可以点击show bad patches看下这样是否能够拉伸,看黑线。。。注意只要在左边还有顶部画黑线就可以了,右边和底部不需要画。
5、最后你得到了这个Spinner的背景了,给他的background属性就可以了
贴下xml的代码:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" 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.coofond.spinnerdemo.MainActivity"> <Spinner android:id="@+id/spn_brand" android:layout_width="match_parent" android:layout_height="wrap_content" android:spinnerMode="dropdown" android:popupBackground="@android:color/white" android:background="@drawable/spbg" android:paddingLeft="20dp" /></RelativeLayout>
二、然后讲下Spinner的hint效果的实现
主要Spinner的适配器,有个getcount的方法,如果我们返回getCount()-1会使得Spinner一直认为自己本来就少一条,所以除非你在代码里去setSelection(adapter.getCount()-1),否则这个Spinner永远不会自动显示出最后那条。我们就是利用这个原理,将最后一条写成我们想设的hint,就达到了目的。
上自定义的ArrayAdapter的代码:
package com.coofond.spinnerdemo;import android.content.Context;import android.widget.ArrayAdapter;import java.util.List;/** * 给下拉框的适配器 * Created by IBM on 2016/10/25. */public class simpleArrayAdapter<T> extends ArrayAdapter { //构造方法 public simpleArrayAdapter(Context context, int resource, List<T> objects) { super(context, resource, objects); } //复写这个方法,使返回的数据没有最后一项 @Override public int getCount() { // don't display last item. It is used as hint. int count = super.getCount(); return count > 0 ? count - 1 : count; }}
最后我们的MainActivity.java中的代码就比较方便了:
package com.coofond.spinnerdemo;import android.app.Activity;import android.os.Bundle;import android.widget.Spinner;import java.util.ArrayList;import java.util.List;public class MainActivity extends Activity { private Spinner mySpinner; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); } private void initView() { mySpinner= (Spinner) findViewById(R.id.spn_brand); } private void initData(){ //数据 List<String> data_list = new ArrayList<String>(); data_list.add("北京"); data_list.add("上海"); data_list.add("广州"); data_list.add("深圳"); data_list.add("请选择品牌"); //适配器 simpleArrayAdapter arrAdapter = new simpleArrayAdapter<String>(this, R.layout.simple_spinner_item, data_list); //设置样式 arrAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //加载适配器 mySpinner.setAdapter(arrAdapter); mySpinner.setSelection(data_list.size() - 1, true); }}
这个demo的下载地址:
http://download.csdn.net/detail/z_zt_t/9664742
总结:最后我们要知道的是这种效果比较容易实现,另外一种方法EditText+popupwindow也是可以实现的。但是我们这种方法也比较方便。主要就是hint和样式这个两个点,讲的很详细了。最后,have a nice day!
- 自定义Spinner样式以及实现hint效果
- 【安卓】如何制作Spinner的Hint提示效果,并自定义Spinner样式
- Android开发之自定义Spinner样式的效果实现(源代码实现)
- 自定义EditText hint 样式
- 一个背景图实现自定义spinner样式
- Android 自定义 spinner样式
- 自定义spinner样式
- 轻松自定义spinner样式
- 自定义Spinner样式
- 自定义spinner下拉框样式,并实现三级联动
- android spinner 样式完全自定义[包括RadioButton和RatingBar效果自定义]
- Android中spinner自定义样式
- 自定义Spinner下拉列表样式
- Android自定义简单spinner样式
- 自定义spinner下拉框样式
- android 自定义控件样式点击效果实现
- Android 实现自定义Spinner
- Android 实现自定义Spinner
- 第九周OJ(1)统计字符个数
- hdu_1166敌兵布阵
- 第九周 OJ ASCII排序
- DL_POLY下并行计算出错问题解决
- 轻松学习之 IMP指针的作用
- 自定义Spinner样式以及实现hint效果
- 4-1 复数类的运算符重载
- javascript学习笔记(一)
- 欢迎使用CSDN-markdown编辑器
- 网上找的一些效果代码
- [Spring+Hibernate系列]2.项目介绍与首个MVC实例
- 嵌入式开发之linux基础第七天学习笔记 shell脚本编程(二)
- pdf根据指定标记替换内容重新生成pdf
- sqoop详解