在RelativeLayout中使用重力右对齐TextView

时间:2013-10-17 10:06:42

标签: android android-layout android-xml

我试图让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和微调器左对齐而不是右对齐?另外,为什么editText没有垂直居中?

4 个答案:

答案 0 :(得分:6)

像这样编辑你的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" />

这应该可以解决你的问题,即你使用重力将edittext放在右边,但重力实际上是用来定位视图的内容而不是视图本身。

如果您仍然遇到问题,请发表评论

答案 1 :(得分:5)

android:gravity="center_vertical|right"

表示edittext中的内容将右对齐并位于center_vertical postion

如果您想要右对齐,可以使用alignParentRight="true"toRightOf="id_to_which_it_relate_to"

答案 2 :(得分:2)

您无法仅使用重力对齐RelativeLayout子视图。 尝试使用android:layout_centerVertical =“true”和android:layout_alignParentRight =“true”而不是

答案 3 :(得分:0)

将Button与RelatativeLayout和TextView左侧对齐。将EditText保留在TextView和Button之间。