В чем заключается хитрость с 0dip layout_height или layouth_width? - PullRequest
17 голосов
/ 28 августа 2011

Я имею в виду, почему кто-то хочет, чтобы они видели высоту 0dip? Я видел это много раз, должно быть, какая-то хитрость, но я не понимаю.

        <TextView android:gravity="top" android:textColor="#FFFF0000"
            android:textSize="20dip" android:text="TextView"
            android:layout_height="0dip" android:layout_width="fill_parent"
            android:id="@+id/contactName"></TextView>

Почему они не используют, например, wrap_content? Чего они хотят достичь?

Ответы [ 3 ]

25 голосов
/ 28 августа 2011

Это интенсивно используется для просмотра в LinearLayout. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  1. android:layout_height
  2. android:layout_width
  3. android:layout_weight

Вы можете найти пример с android:layout_weight в учебном проекте .

Таким образом, когда android:layout_weight используется на View X и LinearLayout находится в горизонтальном положении, то X android:layout_width просто игнорируется.

Аналогично, когда android:layout_weight используется на View X, а LinearLayout в вертикальном положении, X android:layout_height игнорируется.

На самом деле это означает, что вы можете поместить что-нибудь в эти игнорируемые поля: 0dp или fill_parent или wrap_content. Это не важно Но рекомендуется использовать 0dp, чтобы View не делали дополнительного расчета их высоты или ширины (что затем игнорируется). Этот маленький трюк просто экономит циклы процессора.

18 голосов
/ 28 августа 2011

Это обычно используется, когда имеется много видов внутри линейного слоя, и для них установлено android: layout_weight = "1", чтобы оба вида занимали одинаковое пространство.например:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:text="TextView" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:text="TextView" />

</LinearLayout>

В этом случае вид будет иметь такую ​​же высоту, как и все остальные виды.

1 голос
/ 20 января 2014

android:layout_height="0dp" используется в различных кодах, потому что:

  1. Это означает, что высота вида может быть изменена позже из-за других ограничений макета.
  2. Это обычная практика, часто встречающаяся в относительных и линейных схемах.

например:

android:layout_height = "0dp"
android:layout_weight = "1.0"

Высота или ширина при значении «0dp» в основном используются в сочетании с «весом». например Вы хотите заполнить все доступное пространство для высоты, затем использовать приведенный выше код и аналогично тому же случаю для ширины.

...