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的代码:

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">

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"

/>

二、然后讲下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 extends ArrayAdapter {

//构造方法

public simpleArrayAdapter(Context context, int resource, List 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 data_list = new ArrayList();

data_list.add("北京");

data_list.add("上海");

data_list.add("广州");

data_list.add("深圳");

data_list.add("请选择品牌");

//适配器

simpleArrayAdapter arrAdapter = new simpleArrayAdapter(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..net/detail/z_zt_t/9664742

总结:最后我们要知道的是这种效果比较容易实现,另外一种方法EditText+popupwindow也是可以实现的。但是我们这种方法也比较方便。主要就是hint和样式这个两个点,讲的很详细了。最后,have a nice day!

android hint格式,自定义Spinner样式以及实现hint效果相关推荐

  1. Android开发之自定义Spinner样式的效果实现(源代码实现)

    android系统自带的Spinner样式是远远满足不了我们实际开发过程中对Spinner UI风格的要求,因此我们肯定需要为了切合整个应用的风格,修改我们的Spinner样式.系统给我们提供了两种常 ...

  2. Android EditText简单自定义边框样式

    1.去掉全部边框 Android:background="@null". 2.自定义样式: shape中如果不通过Android:shape来指定形状时,默认是矩形,其中solid ...

  3. Android使用popueWindow自定义Spinner

    其实就是很简单的控件自定义,只不过这两天项目用到,还是到处搜改了下,现简单记录.方便有需要的时候修改为自己使用: 需求 一个TextView或者Button点击的时候要弹出一些下拉选择框,可能Text ...

  4. Android 中使用自定义ttf字体实现酷炫效果

    所谓无图无真相,先看效果图: Java代码如下: package yc.android.fonts;import android.app.Activity; import android.graphi ...

  5. android 继承dialog自定义对话框

    android  继承dialog自定义对话框 样式如下: 代码实现: 主要Activity: public class MainActivity extends Activity { Button ...

  6. android spinner自定义样式,android自定义Spinner下拉菜单(下拉列表框)样式

    在Android中Spinner就是下拉菜单,它相当于HTML中的标签. Android中提供的Spinner Widget下拉菜单已经非常好用了,样式也适用, 不过我们还是可以通过定义xml的方式来 ...

  7. android自定义下拉筛选,android自定义Spinner下拉菜单(下拉列表框)样式

    在Android中Spinner就是下拉菜单,它相当于HTML中的标签. Android中提供的Spinner Widget下拉菜单已经非常好用了,样式也适用, 不过我们还是可以通过定义xml的方式来 ...

  8. android 自定义 黑点,Android自定义密码样式 黑点转换成特殊字符

    本文为大家分享了Android自定义密码样式的制作代码,黑点换成¥.%等特殊字符,供大家参考,具体内容如下 复制下面代码即可: 布局: xmlns:android="http://schem ...

  9. android密码是小黑点,Android自定义密码样式 黑点转换成特殊字符

    本文为大家分享了Android自定义密码样式的制作代码,黑点换成¥.%等特殊字符,供大家参考,具体内容如下 复制下面代码即可: 布局: xmlns:android="http://schem ...

最新文章

  1. MybatisPlus忽略实体类中的非数据库字段、JPA忽略实体类中的非数据库字段、HeHibernate忽略实体类中的非数据库字段
  2. 第一家线下场景大数据平台Anchor-Point诞生
  3. 理解 Azure 虚拟机的性能监视
  4. opencv-python教程学习系列2-读取/显示/保存图像
  5. 2019 湖南多校第五场题解
  6. c语言用户登录成功才能,c语言用户登录.docx
  7. 函数进阶之生成器和迭代器
  8. html块级页面居中,几个并排div的CSS / HTML居中
  9. php学生管理系统整理
  10. php对接打码平台,易语言接入打码平台的方法
  11. python实现指纹识别毕业论文_指纹识别算法实现本科毕业论文
  12. 更好的 java 重试框架 sisyphus 入门简介
  13. Pr 入门教程如何创建动作序列?
  14. java排他_排他文件锁实现(Java版本)
  15. 怎么抠图最简单?教你一行Python代码去除照片背景
  16. 总结今年一些公司的待遇
  17. 用Winfrom动态生成SQL的insert语句
  18. python中xml解析sax_Python解析xml大文件[sax]
  19. java笔试--北京轩宇信息
  20. 【STM32H7教程】第3章 STM32H7整体把控

热门文章

  1. CDR插件开发之CPG插件003 - 使用VS2019编译CDR类型库 VGCoreAuto.tlb
  2. 人工蜂群算法源代码的获取
  3. Stripe一家神奇的支付公司
  4. jsp常用的指令与标签
  5. linux7如何关闭防火墙,Linux下Centos 7如何关闭防火墙?
  6. 1688打印快递单接口、1688怎么打单发货、1688卖家怎么打印快递
  7. 动态规划之最长不下降子序列
  8. EasyExcel读取Excel日期为数字如何解决
  9. springboot快速开发微信支付
  10. 北京大学、阿里巴巴成立联合实验室,聚焦人工智能理论和创新算法研究