【问题标题】:How to bring spinner arrow closer to selected text?如何使微调器箭头更靠近所选文本?
【发布时间】:2018-10-22 18:25:19
【问题描述】:

我知道这个问题是重复的,但我没有得到正确的解决方案。
我想让箭头更靠近微调器(这意味着我想减小微调器的宽度并减少文本和向下箭头之间的空间)我使用了默认微调器。我怎样才能做到这一点?请指导我获得解决方案。
这是 XML 代码

 <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="25dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:gravity="center"
        android:textAlignment="center"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/relativeLayout15">

        <Spinner
            android:id="@+id/languageDropdown"
            style="@style/SpinnerTheme"
            android:layout_width="66dp"
            android:layout_height="wrap_content"
            android:entries="@array/Languages" />
    </RelativeLayout>

【问题讨论】:

  • 请清楚说明您的问题。
  • 这意味着您想减小微调器的宽度并减小文本和向下箭头之间的间距,对吗?我编辑了你的问题。
  • 如何更改默认微调器的字体样式?

标签: android android-layout spinner android-spinner


【解决方案1】:

正如我理解您的问题一样,很多时候我们都面临自定义微调器 UI 的需求,而实现这一点太难了。我通常在这种情况下使用这个解决方案:

解决方案:隐藏您的实际Spinner 并显示一个TextView,它看起来就像我们想要的Spinner,请查看下图以更好地理解:

在上图中,我创建了一个电话号码字段,我使用Spinner 从用户那里获取国家代码。我创建了一个TextView,将文本作为国家代码,向下箭头的drawable[right]。请检查以下 XML 代码以更好地理解:

在上图中Spinner 宽度为0dp,因此您的Spinner 将不可见。 只需记住一点,您必须处理TextView 的点击事件并为Spinner 调用performClick() 方法。此代码请参考下图:

在您的TextView 的点击事件中,请按照以下方式操作:

textViewLabelCodeRegister.id -> {
   spinnerCountriesRegister.performClick()
}

就是这样。

【讨论】:

  • 如何更改默认微调器的字体样式?
【解决方案2】:

制作 PopupWindow 而不是 Spinner

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    相关资源
    最近更新 更多