在RelativeLayout中使用重力右对齐TextView

Aha*_*nne 4 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>
Run Code Online (Sandbox Code Playgroud)

该按钮是不可见的,结果如下所示:

布局

我假设按钮是不可见的,因为editText左对齐并覆盖它或将其推出布局框架.为什么editText和微调器左对齐而不是右对齐?另外,为什么editText没有垂直居中?

Rav*_*avi 7

像这样编辑你的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" />
Run Code Online (Sandbox Code Playgroud)

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

如果你仍然面临问题,请发表评论


SKT*_*SKT 5

android:gravity="center_vertical|right"
Run Code Online (Sandbox Code Playgroud)

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

如果你想对齐你可以使用alignParentRight="true"toRightOf="id_to_which_it_relate_to"