2013-05-23 3 views
19

Я не понимаю значение layout_alignWithParentIfMissing для атрибута TextView.Сложность понимания layout_alignWithParentIfMissing

Я прочитал следующее documentation:

android:layout_alignWithParentIfMissing

Если установлено значение истинно, то родитель будет использоваться в качестве якоря, когда якорь не может быть найдено для layout_toLeftOf, layout_toRightOf и т.д.

Должно быть логическое значение, либо true, либо false.

Пожалуйста, объясните мне.

ответ

24

Это применимо только при использовании RelativeLayout.

Если вы установили элемент для того, чтобы быть в другом элементе, это означает, что он будет слева от этого элемента.

Но если этот элемент будет отсутствовать, потому что вы его удалите, например, он будет выровнен по отношению к родительскому.

Возьмите этот пример

<?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 будет позиционировать элемент относительно родителя вместо элемента должно быть, потому что он отсутствует.

Если это неверные параметры, относящиеся к отсутствующим элементам, будут проигнорированы.

+0

Недопустимый параметр макета в TextView: layout_alignWithParentIfMissing - эта ошибка наступает – vhd

+0

Да! Это сработало :) – vhd

0

В относительных макетах положение вида может быть указано относительно другого вида.

Теги layout_toLeftOf и layout_toRightOf позиция мнение по отношению к «якорного» объекта просмотра. Когда этот анкер View отсутствует, тег alignWithParentIfMissing, выровнят ваше представление с родительским представлением.

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" TextView ведет себя как имеющий андроид: layout_alignParentRight = "истинную" собственность.

Смежные вопросы