介绍:
随着Android 6.0.1的新版本,似乎Android对Spinner组件进行了一些更改,因为默认情况下,胡萝卜周围的内部填充更大一些.
我在一个应用程序中注意到了这一点,我没有修改代码中的任何内容,只是更新了设备上的操作系统,但是微调器的大小不同.
情况:
我有两个旋转器,一个在另一个旁边RelativeLayout
(介意其余组件,我添加了所有内容,所以你可以看到这部分布局 - 删除了完全不必要的属性或视图ID)
Spinner适配器用于该getView()
方法的布局如下:
为例:
屏幕截图结合了两个独立的截图:
顶部的那个采用在Android 6.0上运行的Nexus 5设备
下面的一个也是在Android 6.0.1上运行的Nexus 5设备上拍摄的
编辑1
使用支持库中的AppCompatSpinner不会更改行为.使用的支持库版本是23.1.1
通过最小的努力,我能够通过为微调器构建自定义背景来解决这个问题.
使用AppCompatSpinner
我必须为背景创建2 xmls,让我们称之为spinner_background.xml
:
1.首先进入drawable
文件夹,看起来像这样spinner_background.xml
:
selector_background_borderless
简单选择器在哪里(我添加了你需要的最小项目,你可以探索它是v21 +的涟漪替代品.实际上我建议你这样做):
并且bg_spinner_anchor
是一个9patch PNG for the caret.我使用了这些资产:bg_spinner_anchor
2.第二个进入drawable-v23
文件夹以正确支持纹波,如下所示spinner_background.xml
:
ic_spinner_caret
从Android源代码中使用的向量在哪里看起来像这样.你应该添加它也添加到您的drawable-v23
文件夹:
积分从Android UI工具包转到alanv for Guidance!