Android Spinner:删除文本和下拉图标之间的多余空格

Posted

技术标签:

【中文标题】Android Spinner:删除文本和下拉图标之间的多余空格【英文标题】:Android Spinner: Remove Extra White Space Between Text and Dropdown Icon 【发布时间】:2018-02-01 09:10:18 【问题描述】:

我有微调器,默认情况下,文本和下拉图标之间有额外的空白,我真的不喜欢想删除它。

尝试通过网络搜索,但没有得到任何可以帮助我的东西。这里有谁之前做过吗?

【问题讨论】:

自定义微调器 How to customize a Spinner in android的可能重复 那里的解决方案都不适合我 【参考方案1】:

移除 xml 中微调器的填充

<Spinner
    android:layout_
    android:layout_
    android:layout_gravity="left"
    android:padding="0dp"     
    android:id="@+id/my_spinner">

SpinnerAdapter 或您的 Adapter 类应根据您的需要进行定制。

SpinnerAdapter.getView(position, convertView, parent)    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
        View view = super.getView(position, convertView, parent);
        view.setPadding(0, view.getPaddingTop(), view.getPaddingRight(), view.getPaddingBottom());
        return view;

更改微调器列表项布局中的样式属性

【讨论】:

【参考方案2】:

我是在玩 Spinner 之后自己做的。这是效果很好的解决方案。

首先使用您选择的指示图像创建一个下拉菜单。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape
        android:shape="rectangle"/>
</item>
<item
    android:
    android:
    android:gravity="right|center_vertical">
    <bitmap
        android:src="@drawable/ic_dropdown"
        android:tint="@color/colorPrimaryDark"/>
</item></layer-list>

然后将其分配给 Spinner 的背景。

<Spinner
        android:id="@+id/basket_spinner_item_quantity"
        android:layout_
        android:layout_
        android:spinnerMode="dropdown"
        android:padding="0dp"
        android:background="@drawable/ic_spinner_dropdown"/>

现在,根据您的要求调整微调器项目的填充和对齐方式。

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/simple_spinner_text_quantity"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingLeft="20dp"
android:paddingRight="25dp"
android:gravity="right"
android:textAlignment="gravity"/>

【讨论】:

一个好的开始。我需要在第一项上添加android:right="24dp",在第二项上添加android:left="24dp",以防止文本与图标发生冲突。 我给了 android:right="24dp" & android:left="24dp" 仍然文本与可绘制图标发生冲突。请问有什么解决办法吗? 你从哪里得到@drawable/ic_dropdown?【参考方案3】:

只需将以下属性添加到您的微调器 xml 元素:

对于 API

android:gravity="right"

对于 API => 17:

android:gravity="end"

【讨论】:

【参考方案4】:

快速修复

android:layout_marginStart="-40dp"

根据需要使用负边距。在你的微调项 xml 里面

【讨论】:

完全不推荐负边距。如果你需要使用负边距,那你就错了! @Ashu 确实,这就是我写 quickfix 的原因,我仍在寻找解决方案。如果找到请给我链接,谢谢。 @AbhishekGarg 可能添加“Quickfix!不推荐”对于可能在没有完全意识到后果的情况下使用它的初学者会有所帮助。! @Ashu 谢谢你,我完全同意你的想法,我把它记下来以备将来使用。你也可以快速阅读 *** 的政策以了解推荐或不推荐的内容。【参考方案5】:

出于某种原因,给padding:20dp 解决了我的问题。另外,使用translationX 的值来调整下拉图标的位置。最后,您可以使用layout_marginLeftlayout_marginRight 相应地移动整个下拉列表。

【讨论】:

【参考方案6】:

使用下面的代码快速修复

 <Spinner
        android:layout_
        android:layout_
        android:layout_marginLeft="-9dp"
        android:layout_marginTop="10dp"
        android:entries="@array/almanac"
        android:gravity="left"
        android:padding="0dp"
        android:spinnerMode="dropdown"
        android:layout_marginStart="-9dp" />

【讨论】:

【参考方案7】:

将重力设置为结束并使用适当的值进行调整:

  android:gravity="end"
  android:paddingEnd="20dp"

【讨论】:

以上是关于Android Spinner:删除文本和下拉图标之间的多余空格的主要内容,如果未能解决你的问题,请参考以下文章

Android微调器下拉图标不显示

无法更改微调器下拉图标

Android 下拉列表Spinner

Android 下拉列表框文本框菜单

Android Spinner下拉框使用

下拉框(Spinner)