Android/Spinner:删除箭头右侧的填充
Posted
技术标签:
【中文标题】Android/Spinner:删除箭头右侧的填充【英文标题】:Android/Spinner: Remove padding to the right of the arrow 【发布时间】:2018-10-18 13:56:47 【问题描述】:我在相对布局中使用微调器和其他几个布局元素(layout-v21):
<Spinner
android:id="@+id/spinner"
android:layout_
android:layout_
android:layout_alignBottom="@+id/textList"
android:layout_alignTop="@+id/textList"
android:layout_alignParentEnd="true"
android:layout_marginLeft="5dp"
android:layout_marginRight="0dp"
android:layout_toEndOf="@+id/textList"
android:paddingRight="1dp"/>
这会设置到父布局结束的距离:
android:layout_marginRight="0dp"
android:layout_alignParentEnd="true"
这设置了微调器中的选项与箭头左侧的距离(文本的右侧填充):
android:paddingRight="1dp"
但是有没有办法摆脱(或至少缩小)箭头右侧但仍在微调器布局元素内的不必要的空间/填充(所以我可以然后在不改变微调器大小的情况下在左侧使用更多空间)?
这就是我要说的:
编辑:这是RelativeLayout的代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.mycompany.myapp.MainActivity"
android:backgroundTint="#000000"
android:focusableInTouchMode="true">
【问题讨论】:
请同时提供父RelativeLayout的代码。 因为你已经给定了宽度 android:layout_ 。简单的增加 android:layout_marginStart="5dp" 到 10dp/15dp。 @LuísHenriques 我将其添加到第一篇文章中。 @RohanLodhi 请解释这对我的情况有何帮助。android:layout_marginStart=5dp
控制到微调器左侧布局元素的距离,与android:layout_marginLeft=5dp
相同。两者都不会改变填充,只会改变整个元素的大小。
@Neph android:paddingRight="@dimen/activity_horizontal_margin" 在相对布局中删除。
【参考方案1】:
它对我有用:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:paddingBottom="10dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp"
android:backgroundTint="#000000"
android:focusableInTouchMode="true">
<Spinner
android:id="@+id/spinner"
android:layout_
android:layout_
style="@style/spinner_style"
android:layout_alignParentEnd="true"
android:layout_marginLeft="5dp"
android:layout_marginRight="0dp"
android:paddingRight="1dp"/>
styles.xml
<style name="spinner_style">
<item name="android:layout_height">35dp</item>
<item name="android:background">@drawable/spinner_bg</item>
</style>
spinner_bg.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<layer-list>
<item>
<shape>
<gradient android:angle="90" android:endColor="@android:color/white" android:startColor="@android:color/white" android:type="linear" />
<stroke android: android:color="@color/colorAccent" />
<corners android:radius="0dp" />
<padding android:bottom="6dp" android:left="6dp" android:right="6dp" android:top="6dp" />
</shape>
</item>
<item>
<bitmap android:gravity="center|right" android:src="@drawable/ic_spin_down_arrow" />
</item>
</layer-list>
</item>
</selector>
【讨论】:
它究竟为您删除了什么?箭头右侧的内边距,但仍 内 微调器元素或微调器右侧的内边距以及 外 微调器元素?如果无法描述,可以在我发布的第一张图片上标记该区域。 @Neph 立即查看。抱歉没有看到您的第二张图片。 啊,我明白了,你正在创造自己的风格。我猜如果不这样做就无法删除右侧的填充?不过请删除第一部分,只保留编辑过的部分,否则会令人困惑。我必须在哪个文件夹中将“spinner_bg.xml”文件放入“values”(“styles.xml”也在其中)或“layout-v21”中,我在哪里可以获得spinner_bg
和ic_spin_down_arrow
文件来自(当然还没有在我的“可绘制”文件夹中)。
spinner_bg.xml 在 drawable 文件夹中,您可以使用任何下拉箭头,您可以轻松地从 google 或 android studio 获取。如果可行,请点赞。以上是关于Android/Spinner:删除箭头右侧的填充的主要内容,如果未能解决你的问题,请参考以下文章
Android Spinner:删除文本和下拉图标之间的多余空格