对齐到相对布局的右侧似乎不起作用

Jim*_*Jim 1 android android-relativelayout

我正在尝试将 2 个文本视图放在父容器右侧的另一个旁边。
就像是:

+++++++++++++++++++++++++++++++++++++  (parent container)  
|               TextView2 TextView1 |  
+++++++++++++++++++++++++++++++++++++    
Run Code Online (Sandbox Code Playgroud)

以下不起作用,但我不明白为什么

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="100dp"
              android:layout_height="match_parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:text="TEXTVIEW-1" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true"
            android:layout_toLeftOf="@id/textView1"
            android:layout_marginRight="1dp"
            android:text="TEXTVIEW-2" />

    </RelativeLayout>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

注意:100dp 只是为了说明问题

更新:
删除 android:layout_alignParentTop="true" 和 android:layout_alignParentRight="true" 后,我得到:

在此处输入图片说明

kir*_*403 5

在您的第二个 TextView 上,使用android:layout_toLeftOf="@id/textView1"并删除android:layout_alignParentTop="true"android:layout_alignParentRight="true"

像这样:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="100dp"
              android:layout_height="match_parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:text="TEXTVIEW-1"
            />
        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@id/textView1"
            android:layout_marginRight="1dp"
            android:text="TEXTVIEW-2"
            />

    </RelativeLayout>  

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

它的实际作用是:

当您android:alignParentRight="true"在两个 textViews 中使用时,它会将两个 textViews 放置在彼此重叠的右侧。

因此,仅将其添加到一个 textView 时,它只会将其与右侧对齐。然后添加toLeftOf会将其放置在第一个 textView 的左侧。

更新:

我没有找到关于如何优先考虑相对布局的问题的任何文档。但是,我深入研究了RelativeLayout.java 文件以找出答案。有点难以理解。

所以我尝试使用选项和我发现的内容:

  • 如果您申请android:layout_alignParentStart="true"并且android:layout_alignParentEnd="true"将优先考虑android:layout_alignParentStart

  • 如果您申请android:layout_toStartOf="@id/view2"并且android:layout_toEndOf="@id/view2"优先考虑android:layout_toEndOf

  • 如果您申请android:layout_alignParentStart="true"并且android:layout_toStartOf="@id/view1"将优先考虑android:layout_alignParentStart

  • 如果您申请android:layout_alignParentStart="true"android:layout_centerHorizontal="true"并且android:layout_toStartOf="@id/view1"

    然后会按顺序给予优先权

     android:layout_alignParentStart="true"   //1 High
     android:layout_toStartOf="@id/view1"     //2 Medium
     android:layout_centerHorizontal="true"   //3 Low
    
    Run Code Online (Sandbox Code Playgroud)

    因此,这意味着android:layout_centerHorizontal只有在android:layout_alignParentStart并且android:layout_toStartOf不会在那里时才会起作用。

希望现在清楚了。如果有人找到这方面的文档,我很乐意阅读有关优先事项的信息。