Spinner控件详解
Spinner控件详解
效果图
修改Spinner样式
在介绍之前,先看一下系统原生的样式
6.x & 5.x系统样式
4.x系统样式
官方文档
| XML属性 | 方法 | 描述 |
|---|---|---|
| android:dropDownHorizontalOffset | setDropDownHorizontalOffset(int) | Amount of pixels by which the drop down should be offset horizontally. |
| android:dropDownSelector | List selector to use for spinnerMode=”dropdown” display. | |
| android:dropDownVerticalOffset | setDropDownVerticalOffset(int) | Amount of pixels by which the drop down should be offset vertically. |
| android:dropDownWidth | setDropDownWidth(int) | Width of the dropdown in spinnerMode=”dropdown”. |
| android:gravity | setGravity(int) | Gravity setting for positioning the currently selected item. |
| android:popupBackground | setPopupBackgroundResource(int) | Background drawable to use for the dropdown in spinnerMode=”dropdown”. |
| android:prompt | The prompt to display when the spinner’s dialog is shown. | |
| android:spinnerMode | Display mode for spinner options. |
填充数据
Spinner spinner = (Spinner) findViewById(R.id.spinner);
// 建立数据源
String[] mItems = {"Item 1", "Item 2", "Item 3", "Item 4"};
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, mItems);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
点击监听
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
// TODO
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO
}
});
设置下拉框的位置(偏移量)
系统默认效果在上面已经看到了,下拉框的左上方顶点坐标与Spinner控件左上角顶点坐标在同一位置
设置垂直偏移量
- android:dropDownVerticalOffset
- setDropDownVerticalOffset(int)
垂直偏移量就是只在原基础上向下或者向上偏移多少像素
例如,有时候我们想要下拉框在Spinner下面显示,类似这样
我们可以这样写(XML)
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_margin="20dp"
android:dropDownVerticalOffset="40dp" />
设置水平偏移量
- android:dropDownHorizontalOffset
- setDropDownHorizontalOffset(int)
呃……
设置下拉框背景色
- android:popupBackground
- setPopupBackgroundResource(int)
和设置控件背景一样,除了色值也可以设置一个Shape,例如这样
android:popupBackground="@drawable/shape_green"
自定义Spinner内文字字体样式
方式一
我们在填充数据的时候,创建了一个ArrayAdapter
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, mItems);
传进去一个item布局,这个XML就是Spinner字体样式的文件,我们可以自己创建一个XML传进去,例如:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:singleLine="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#FF5A5A5A"
android:ellipsize="marquee"
android:textAlignment="inherit"/>
方式二
在Spinner的监听里,获取到布局,修改样式,例如这样:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
// 获取到TextView
TextView tv = (TextView)view;
// 修改样式属性
tv.setTextColor(Color.BLUE);
tv.setTextSize(15f);
tv.setGravity(Gravity.CENTER);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
Toast.makeText(MainActivity.this, "Nothing", Toast.LENGTH_SHORT).show();
}
});
自定义下三角样式
可以通过设置背景色,将这个三角冲掉
方式一
添加一个带有下三角的背景图
方式二
将背景色设置为透明
<Spinner
……
android:background="@android:color/transparent"
…… />
然后在Spinner的TextView上画一个我们想要的图案
android:drawableRight="@mipmap/dropmenu_icon_down"
思路就是这样,具体怎么修改,可以参考上面的“自定义Spinner内文字字体样式”,效果如下:
自定义下拉框中Item样式
我们在创建完Adapter以后,设置了一个下拉框里的Item样式,是一个系统样式
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
那么,我们自定义一个自己的样式,就可以啦。例如这样:
<?xml version="1.0" encoding="utf-8"?><!--
/*
**Spinner 下拉Item的样式
*/
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="@dimen/y61"
android:ellipsize="marquee"
android:gravity="right|center"
android:maxEms="30"
android:paddingRight="@dimen/x28"
android:singleLine="true"
android:textColor="#FF262626"
android:textSize="@dimen/x28" />
效果图
设置下拉框风格
- android:spinnerMode
dropdown
android:spinnerMode="dropdown"
就是我们上面一直演示的样式。
dialog
android:spinnerMode="dialog"
弹窗的样式,像这样:
设置下拉框宽度
- android:dropDownWidth
其他
android:dropDownSelector
android:prompt
Spinner控件详解的更多相关文章
- android Spinner控件详解
Spinner提供了从一个数据集合中快速选择一项值的办法.默认情况下Spinner显示的是当前选择的值,点击Spinner会弹出一个包含所有可选值的dropdown菜单,从该菜单中可以为Spinner ...
- IOS—UITextFiled控件详解
IOS—UITextFiled控件详解 //初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGR ...
- picker控件详解与使用,(实现省市的二级联动)
picker控件详解与使用,(实现省市的二级联动) 第一步:新建一个单视图(single view)的工程, 命名为pickerTest,不要勾选下面两个选项,第一个是新版本里面的,第二个是单元测试, ...
- Switch控件详解
Switch控件详解 原生效果 5.x 4.x 布局 <Switch android:id="@+id/setting_switch" android:layout_widt ...
- ToolBar控件详解
ToolBar控件详解 在Activity中添加ToolBar 1.添加库 dependencies { ... compile "com.android.support:appcompat ...
- Android开发:文本控件详解——TextView(一)基本属性
一.简单实例: 新建的Android项目初始自带的Hello World!其实就是一个TextView. 在activity_main.xml中可以新建TextView,从左侧组件里拖拽到右侧预览界面 ...
- Android开发:文本控件详解——TextView(二)文字跑马灯效果实现
一.需要使用的属性: 1.android:ellipsize 作用:若文字过长,控制该控件如何显示. 对于同样的文字“Android开发:文本控件详解——TextView(二)文字跑马灯效果实现”,不 ...
- C++ CComboBox控件详解
转载:http://blog.sina.com.cn/s/blog_46d93f190100m395.html C++ CComboBox控件详解 (2010-09-14 14:03:44) 转载▼ ...
- 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
博客地址 : http://blog.csdn.net/shulianghan/article/details/50051499 ; 一. UI 控件简介 1. UI 控件分类 UI 控件分类 : 活 ...
随机推荐
- IdentityServer4-介绍大纲(译文)
简介 IdentityServer4是一个基于ASP.NET CORE2使用OAuth2.0协议和OpenID Connect的框架 特性如下: Authentiaction作为一个Service 集 ...
- SQL基础-----DDL
1 (My)SQL入门 这里用了(My)SQL这样的标题,目的是介绍标准SQL的同时,也将MySQL在标准SQL上的扩展一同介绍给读者. 2:SQL分类 SQL语句主要可以划分为以下3个类别 .DDL ...
- Vue还有这种操作?浅析几个新手常常忽略的API
一:实现子组件与父组件双向绑定的"sync": 一般来说,我们实现父子组件值的传递通常使用的是[props]和自定义事件[$emit].父组件通过[props]将值传给子组件,子组 ...
- Node.js系列文章:如何进行代码调试
使用任何一门编程语言,都少不了代码调试这一功能.我们在使用JavaScript编写浏览器端代码时,Chrome提供了强大的调试工具Dev Tools,但是在编写Node.js代码时,大多数人最开始都使 ...
- jQuery中的for循环var与let的区别
今天在写jQuery请求接口中发现一个问题: 在用AJAX发送请求中又嵌套了一个AJAX请求,发现在内层请求的success中对第一次success中的循环变量 i 无法获取,具体代码如下: $.aj ...
- [Codeforces 933B]A Determined Cleanup
Description 题库链接 给你两个正整数 \(p,k\) ,询问是否能够构造多项式 \(f(x)=\sum\limits_{i=0}^{d-1}a_ix^i\) ,使得存在多项式 \(q(x) ...
- [HEOI2015]小Z的房间
Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. ...
- P2515 [HAOI2010]软件安装
树形背包 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> ...
- hdu 5517 Triple(二维树状数组)
Triple Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- 【BZOJ2241】【Sdoi2011R1D1】打地鼠
原题传送门 Description 打地鼠是这样的一个游戏:地面上有一些地鼠洞,地鼠们会不时从洞里探出头来很短时间后又缩回洞中.玩家的目标是在地鼠伸出头时,用锤子砸其头部,砸到的地鼠越多分数也就越高. ...