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" 后,我得到:
在您的第二个 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不会在那里时才会起作用。
希望现在清楚了。如果有人找到这方面的文档,我很乐意阅读有关优先事项的信息。
| 归档时间: |
|
| 查看次数: |
3028 次 |
| 最近记录: |