在RelativeLayout中使用gravity使TextView右对齐

5

我正在试图将一个editText放在我的布局的右边缘,使其左侧有一个按钮,如下所示:

  <RelativeLayout
    android:id="@+id/FindClientLayout"
    android:layout_width="@dimen/third_width"
    android:layout_height="@dimen/half_height"
    android:layout_alignParentLeft="false"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="false"
    android:layout_below="@id/HeaderLayout"
    android:layout_margin="@dimen/fragment_separation"
    android:layout_toRightOf="@id/scrollViewRecommend"
    android:background="@drawable/login_border" >

    <TextView
        android:id="@+id/textViewFindClient"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="@string/find_client"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@color/Black" />

    <EditText 
        android:id="@+id/editTextClient"
        android:layout_width="@dimen/input_text_width"
        android:layout_height="wrap_content"
        android:gravity="center_vertical|right"
        android:inputType="text"/>
    <Spinner
        android:id="@+id/spinnerClientList"
        android:layout_width="@dimen/input_text_width"
        android:layout_height="wrap_content"
        android:layout_below="@id/editTextClient"/>

    <Button
        android:id="@+id/buttonDoFind"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:layout_toLeftOf="@id/editTextClient"
        android:text="@string/find" />
</RelativeLayout>

按钮是不可见的,结果看起来像这样:

Layout

我猜按钮不可见是因为editText 左对齐并覆盖或将其推出布局框架。为什么editText 和spinner 左对齐而不是右对齐呢?此外,为什么editText 垂直居中不了?
4个回答

8
请按照以下方式编辑您的XML文件,并检查结果:

<TextView
    android:id="@+id/textViewFindClient"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:text="@string/find_client"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="@color/Black" />

<EditText 
    android:id="@+id/editTextClient"
    android:layout_width="@dimen/input_text_width"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:inputType="text"/>
<Spinner
    android:id="@+id/spinnerClientList"
    android:layout_width="@dimen/input_text_width"
    android:layout_height="wrap_content"
    android:layout_below="@id/editTextClient"/>

<Button
    android:id="@+id/buttonDoFind"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:layout_toLeftOf="@id/editTextClient"
    android:text="@string/find" />

我希望能够解决你的问题,你之前使用了gravity属性将EditText放置在右侧,但是gravity属性实际上用于定位视图内容而不是视图本身。

如果您仍然遇到问题,请留言评论。


6
android:gravity="center_vertical|right"

这句话的意思是编辑框内的内容将会右对齐并垂直居中。

如果您想要右对齐,可以使用alignParentRight="true"toRightOf="与之相关联的id"


2
您不能仅使用gravity对RelativeLayout子视图进行对齐。 请尝试改用android:layout_centerVertical="true"和android:layout_alignParentRight="true"。

此外,EditText 应与 TextView 对齐,否则如果使用 android:layout_alignParentRight="true",TextView 和 EditText 将重叠。 - Piyush
事实上,使用重力是不正确的,正如Ravi和@SKT所指出的。 - Aharon Manne

0
将按钮对齐到RelativeLayout的左侧,将TextView对齐到右侧。保持EditText在TextView和Button之间。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接