LinearLayout match_parent не учитывает ширину других детей? - PullRequest
0 голосов
/ 25 сентября 2019

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

enter image description here

Я пробовал эту раскладку:

<LinearLayout 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:paddingTop="@dimen/my_padding"
    android:paddingBottom="@dimen/my_padding"
    android:paddingLeft="@dimen/my_padding2"
    android:paddingRight="@dimen/my_padding2"
    android:background="?attr/selectableItemBackground"
    android:clickable="true"
    android:focusable="true"
    android:orientation="horizontal">

  <ImageView
      android:id="@+id/Icon"
      android:layout_width="@dimen/icon_size"
      android:layout_height="@dimen/icon_size"
      android:layout_margin="@dimen/icon_margin"
      android:layout_gravity="center_horizontal|center_vertical"
      android:contentDescription="@null"
      android:importantForAccessibility="no"
      tools:ignore="UnusedAttribute" />
  <TextView
      android:id="@+id/Text"
      style="@style/ActionItemStyle"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_marginStart="@dimen/margin_between_icon_and_text"
      android:layout_marginLeft="@dimen/margin_between_icon_and_text"
      android:layout_gravity="center_vertical"
      android:ellipsize="end"
      android:gravity="start|center_vertical"
      android:maxLines="3"
      android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
  <com.my.Chip
      android:id="@+id/highlight_chip"
      style="@style/Widget.Chip.Suggestive"
      android:layout_width="40dp"
      android:layout_height="wrap_content"
      android:layout_marginStart="@dimen/margin_between_highlight_chip_and_text"
      android:layout_marginLeft="@dimen/margin_between_highlight_chip_and_text"
      android:layout_gravity="end|center_vertical"
      android:visibility="visible" />
</LinearLayout>

Почему match_parent в textView делаетширина чипа будет 0dp?

Я читал о match_parent :

Специальное значение для высоты или ширины, запрошенных представлением.MATCH_PARENT означает, что представление хочет быть таким же большим, как его родитель, за вычетом дополнения родителя, если оно есть.Введен в API уровня 8.

, но игнорирует ли он размер братьев и сестер?

Я знаю, что могу использовать weight, но все же хочу понять: match_parent игнорирует ширину братьев и сестер?

enter image description here

1 Ответ

0 голосов
/ 25 сентября 2019
Атрибут

match_parent реагирует в соответствии с родительским представлением.Дочернее представление LinearLayout с шириной в виде `match_parent будет занимать всю ширину и не будет учитывать дальнейшее дочернее представление, если ориентация горизонтальна, поскольку мы говорим о ширине.

Для LinearLayout - для размещения другого дочернего элементавид вместе с детским взглядом, имеющим match_parent;вам нужно использовать layout_weight.

Хотя вы можете использовать другой ViewGroup - FrameLayout без использования layout_weight.

Ниже приведен код с использованием FrameLayout в качестве родительскогоViewGroup.

<FrameLayout 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:paddingTop="@dimen/my_padding"
  android:paddingBottom="@dimen/my_padding"
  android:paddingLeft="@dimen/my_padding2"
  android:paddingRight="@dimen/my_padding2"
  android:background="?attr/selectableItemBackground"
  android:clickable="true"
  android:focusable="true"
  android:orientation="horizontal">

    <ImageView
       android:id="@+id/Icon"
       android:layout_width="@dimen/icon_size"
       android:layout_height="@dimen/icon_size"
       android:layout_margin="@dimen/icon_margin"
       android:layout_gravity="start|center_vertical"
       android:contentDescription="@null"
       android:importantForAccessibility="no"
       tools:ignore="UnusedAttribute" />

     <TextView
       android:id="@+id/Text"
       style="@style/ActionItemStyle"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_marginStart="@dimen/margin_between_icon_and_text"//give enough margin from your icon
       android:layout_marginLeft="@dimen/margin_between_icon_and_text"//give enough margin from your icon
       android:layout_marginRight="64dp"//give enough margin from your chip
       android:layout_gravity="start|center_vertical"
       android:ellipsize="end"
       android:gravity="start|center_vertical"
       android:maxLines="3"
       android:textAppearance="@style/TextAppearance.AppCompat.Body1" />

    <com.my.Chip
       android:id="@+id/highlight_chip"
       style="@style/Widget.Chip.Suggestive"
       android:layout_width="40dp"
       android:layout_height="wrap_content"
       android:layout_marginEnd="8dp"//give enough margin from right edge of screen
       android:layout_gravity="end|center_vertical"
       android:visibility="visible" />
 </FrameLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...