20

我不明白属性的含义layout_alignWithParentIfMissingTextView

我阅读了以下文档

android:layout_alignWithParentIfMissing

layout_toLeftOf如果设置为 true,则在,layout_toRightOf等无法找到锚点时,将使用父级作为锚点。

必须是布尔值,要么true要么false

请给我解释一下。

4

3 回答 3

27

这仅在使用 RelativeLayout 时适用。

如果您将元素设置为 toLeftOf 某个其他元素,则意味着它将位于该元素的左侧。

但是如果这个元素会丢失,例如你删除它,它将与父元素对齐。

举这个例子

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="102dp"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignWithParentIfMissing="true"
        android:layout_alignBottom="@+id/textView1"
        android:layout_toRightOf="@+id/textView1"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout>

看看如果您删除 textView1 但不触摸 textView2 会发生什么。

它会走到底部,在左边(不是右边,因为它在父级内部)

Android 将相对于父元素定位元素,而不是它应该是的元素,因为它丢失了。

如果它是假的,与缺失元素有关的参数将被忽略。

于 2013-05-23T07:45:32.637 回答
2

另一个样本。我刚用过。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="6dip" >

    <Button
       android:id="@+id/streamOverflow"
       android:layout_width="50dp"
       android:layout_height="30dp"
       android:layout_alignParentRight="true"
       android:background="@drawable/ic_action_overflow"
       android:focusable="false" />

    <TextView
       android:id="@+id/delete_time"
       style="?android:attr/textAppearanceSmall"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Disappears "
       android:layout_toLeftOf="@id/streamOverflow"
       android:layout_alignWithParentIfMissing="true"
     />
</RelativeLayout>

如果缺少“streamOverflow”,“delete_time”文本视图的行为就像拥有 android:layout_alignParentRight="true" 属性。

于 2014-04-06T16:44:06.607 回答
0

在相对布局中,可以相对于另一个 View 指定 View 的位置。

标签layout_toLeftOflayout_toRightOf相对于“锚”视图对象定位视图。当缺少此锚视图时,标签alignWithParentIfMissing会将您的视图与父视图对齐。

于 2013-05-23T07:48:52.377 回答