Android将微调器缩短到内容宽度

Posted

技术标签:

【中文标题】Android将微调器缩短到内容宽度【英文标题】:Android shorten spinner to content width 【发布时间】:2016-06-10 11:46:22 【问题描述】:

我正在使用微调器,用户可以选择他们的年龄,看起来像这样:

下拉箭头当前太靠右了。如何设置它以使微调器宽度仅与微调器项目内容所需的一样短?

布局的微调器部分的代码:

<LinearLayout
        android:layout_
        android:layout_
        android:orientation="horizontal" >

        <TextView
            android:layout_
            android:layout_
            android:layout_weight="0.4"
            android:text="Age:" />

        <Spinner
            android:layout_
            android:layout_
            android:id="@+id/input_age_spinner"
            android:layout_weight="0.6" />

    </LinearLayout>

我尝试将微调器布局宽度设置为 wrap_content,但效果不大。而且我尝试将微调器 layout_weight 设置为 0.2,这确实使其变窄,但在这种情况下它不再左对齐

【问题讨论】:

【参考方案1】:

试试这样:

 <RelativeLayout
    android:layout_
    android:layout_>

    <TextView
        android:layout_
        android:layout_
        android:layout_alignParentLeft="true"
        android:text="Age:" />

    <Spinner
        android:id="@+id/input_age_spinner"
        android:layout_
        android:layout_
        android:layout_alignParentRight="true" />
</RelativeLayout>

(或)

<LinearLayout
    android:layout_
    android:layout_
    android:orientation="horizontal">

    <TextView
        android:layout_
        android:layout_
        android:text="Age:" />

    <LinearLayout
        android:layout_
        android:layout_
        android:gravity="right"
        android:orientation="horizontal" >

        <Spinner
            android:id="@+id/spinner2"
            android:layout_
            android:layout_
            android:gravity="left" />
    </LinearLayout>
</LinearLayout>

【讨论】:

有没有办法用线性布局做到这一点? @Simon,编辑了我的答案,但最好使用第一个这样的相对布局。第二个是复杂的布局。 在使用 LinearLayout 时在文本视图和微调器之间放置一个空格。给它的权重为 1,文本和微调器的权重为 0 谢谢,这使微调器变小了,但android:gravity=left 似乎没有做任何事情,因为微调器与父容器的右侧对齐。即微调器应该像其他输入小部件一样向左对齐 android:gravity=left 用于微调器的内容。如果你不给这个,文字会出现在中心。【参考方案2】:
<LinearLayout
        android:layout_
        android:layout_
        android:orientation="horizontal" >

        <TextView
            android:layout_
            android:layout_
            android:layout_weight="0"
            android:text="Age:" />

        <Space
            android:layout_
            android:layout_
            android:layout_weight="1" />

        <Spinner
            android:layout_
            android:layout_
            android:id="@+id/input_age_spinner"
            android:layout_weight="0" />
</LinearLayout>

【讨论】:

【参考方案3】:

试试这个..

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="horizontal" >

    <TextView
        android:layout_
        android:layout_
        android:text="Age:" />

    <Spinner
        android:layout_
        android:layout_
        android:layout_marginBottom="50dp"
        android:id="@+id/input_age_spinner" />

</LinearLayout>

【讨论】:

以上是关于Android将微调器缩短到内容宽度的主要内容,如果未能解决你的问题,请参考以下文章

Android:减小微调器下拉框的宽度

在Android中动态改变微调器的宽度

如何将项目添加到 Android 中的微调器?

Android:如何将微调器绑定到自定义对象列表?

在Android中动态单击按钮添加微调器

在 Android 中动态禁用微调器项目