【问题标题】:Align spinner to the right of edit text将微调器对齐到编辑文本的右侧
【发布时间】:2016-03-13 23:15:36
【问题描述】:

我希望 微调器 出现在 edittext 视图的右侧。

当我尝试下面的代码时,只出现了编辑文本,并且微调器完全消失了。我尝试了很多东西,但没有任何效果。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"
tools:context=".MyActivity">

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/linearlayout1"
android:orientation="horizontal">

   <android.support.design.widget.TextInputLayout
    android:id="@+id/text_input_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
       <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editText"
        android:textSize="20dp"
        android:hint="Duration"
        android:layout_gravity="left"
        android:gravity="center"
        android:layout_marginTop="20dp"
        />
    </android.support.design.widget.TextInputLayout>
       <Spinner
       android:id="@+id/spinner"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginTop="20dp"
       android:layout_gravity="right"
       />
</LinearLayout>
<Button
    android:id="@+id/startAlarm"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_below="@+id/linearlayout1"
    android:layout_marginBottom="20dp"
    android:text="Start Alarm Service" />
<Button
    android:id="@+id/stopAlarm"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/startAlarm"
    android:layout_marginBottom="20dp"
    android:text="Stop Alarm" />
 </RelativeLayout>

如何解决?

【问题讨论】:

    标签: android android-edittext spinner


    【解决方案1】:

    通过将容器LinearLayoutwidth 设置为“match_parent”,并将TextInputLayoutSpinnerwidthweight 设置为0dp & 50(分别),你会得到你想要的布局:

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearlayout1"
        android:orientation="horizontal"
        android:gravity="bottom"
        android:layout_marginBottom="20dp">
    
        <android.support.design.widget.TextInputLayout
            android:id="@+id/text_input_layout"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="50">
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/editText"
                android:textSize="20dp"
                android:hint="Duration"
                android:layout_gravity="left"
                android:gravity="center"
                />
        </android.support.design.widget.TextInputLayout>
        <Spinner
            android:id="@+id/spinner"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:layout_weight="50"
            />
    </LinearLayout>
    <Button
        android:id="@+id/startAlarm"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/linearlayout1"
        android:layout_marginBottom="20dp"
        android:text="Start Alarm Service" />
    <Button
        android:id="@+id/stopAlarm"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/startAlarm"
        android:layout_marginBottom="20dp"
        android:text="Stop Alarm" />
    

    【讨论】:

    • 感谢它向右对齐。但是当我在应用程序中看到微调器略高于 editText。我的意思是不在直线上
    • 删除您在TextInputLayout 上设置的边距。检查我的编辑。
    • 看:当你想将包含在 LinearLayout 中的 2 个元素并排对齐(在本例中为 editText 右侧的微调器)时,请将其 layout_width 属性设置为 match_parent。然后你所要做的就是改变你试图对齐的 2 个元素的 layout_weight 属性:在这种情况下,我给了它们每个值 50,这样每个它们将占用屏幕宽度的一半。将 100 想象为总可用空间,它表示其容器 LinearLayoutweightSum 属性的值。 (默认等于100
    • 很好的解释。为什么在 LinearLayout 中使用 gravity="bottom"
    • 这个解决方案很好,但是当在Spinner 旁边使用TextInputLayout 并且在TextInputLayout 下显示带下划线的错误时,EditText 将上升,对齐将丢失.. . 这个问题有什么解决办法吗?请看我的截图:Alignment Issue ScreenShot
    【解决方案2】:

    我也希望能够找出带下划线的错误,将字段向上推,但 TextInputLayout 似乎只是这样做,因为它就是这样设计的 :-(

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-10
      • 2012-04-06
      • 2016-10-29
      • 2014-06-03
      • 1970-01-01
      • 2014-06-07
      • 2022-01-02
      相关资源
      最近更新 更多