相关疑难解决方法(0)

定制微调器的间距

旋转器提供两种状态.第一个和默认状态(状态A)显示当前选定的值.第二个(状态B)显示触摸微调器显示时的下拉菜单.

状态A和B的例子

默认情况下,左填充被添加到在状态A和B中显示的项目我想删除它被显示在当前所选的值(状态A),但保留它当项目被显示在下拉菜单中(状态B) .

由于填充设置与CheckedTextView中创建微调时指定的布局中,我第一次尝试是传递给微调构造包含空填充一个CheckedTextView自定义布局.这样,左边的填充在状态A中消失,但也在状态B中消失.但是,我的目标是将其保留在状态A.

我的第二次尝试是在我的主题定义中自定义android:dropDownSpinnerStyle.由于更改android:dropDownSpinnerStyle的背景颜色仅更改状态A中项目的背景颜色,我的想法是用负值覆盖marginLeft或paddingLeft.不幸的是,它没有任何效果.

鉴于负边距/填充似乎没有被考虑在内,我尝试了相反的做法.首先,我使用了自定义项目布局(如我第一次尝试所述),以便删除两个状态(A和B)上的左边距.其次,我已经为属性android定义了一个自定义样式:dropDownListViewStyle.不幸的是,在最后一个属性中使用正的marginLeft值无效.因此,我设置了paddingLeft.它工作,并允许我只获得状态B的左边距.但是,左侧空间也适用于背景触摸颜色(参见下图).

在此输入图像描述

我认为如果我想要完全填充下拉菜单宽度的触摸背景颜色,则只应更改状态A的样式.任何想法,建议或例子都受到欢迎.

以下是我第三次尝试的主题定义:

<style name="Theme.App.Base" parent="Theme.App">
    ...
    <item name="android:dropDownListViewStyle">@style/Widget.Spinner.DropDown.ListView</item>
</style>

<style name="Widget.Spinner.DropDown.ListView" parent="Widget.AppCompat.ListView.DropDown">
    <item name="android:paddingLeft">16dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-layout android-spinner drop-down-menu

7
推荐指数
1
解决办法
1万
查看次数