android spinner 控件详解,Spinner控件详解

Spinner控件详解

效果图

e40460554718b08adba4e2347eaf6feb.gif

修改Spinner样式

在介绍之前,先看一下系统原生的样式

6.x & 5.x系统样式

e720a33d8b4628e2d6e80fad741d59e2.gif

4.x系统样式

6135d0815603d6574339a06158de979b.gif

官方文档

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 adapter = new ArrayAdapter(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下面显示,类似这样

097a6bc15e878e5d8b6a4e31613c4fd7.png

我们可以这样写(XML)

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"

914f7d3d50b51e872d631c7afbef23ef.png

自定义Spinner内文字字体样式

方式一

我们在填充数据的时候,创建了一个ArrayAdapter

ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, mItems);

传进去一个item布局,这个XML就是Spinner字体样式的文件,我们可以自己创建一个XML传进去,例如:

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();

}

});

自定义下三角样式

可以通过设置背景色,将这个三角冲掉

方式一

添加一个带有下三角的背景图

方式二

将背景色设置为透明

……

android:background="@android:color/transparent"

…… />

然后在Spinner的TextView上画一个我们想要的图案

android:drawableRight="@mipmap/dropmenu_icon_down"

思路就是这样,具体怎么修改,可以参考上面的“自定义Spinner内文字字体样式”,效果如下:

016771caf21e677d0e248013236f7d19.png

自定义下拉框中Item样式

我们在创建完Adapter以后,设置了一个下拉框里的Item样式,是一个系统样式

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

那么,我们自定义一个自己的样式,就可以啦。例如这样:

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

效果图

64d3fe5524c2e782340c05d7c984d3b2.png

设置下拉框风格

android:spinnerMode

dropdown

android:spinnerMode="dropdown"

就是我们上面一直演示的样式。

dialog

android:spinnerMode="dialog"

弹窗的样式,像这样:

d6d0f5b179d8453b469aa06a3f58918a.gif

设置下拉框宽度

android:dropDownWidth

其他

android:dropDownSelector

android:prompt

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值