Intereting Posts
BluetoothLeScanner.startScan с Android 6.0 не обнаруживает устройств Моя кнопка ввода событий Использование курсора с адаптером ListView для большого количества данных Как проверить имя сертификата и псевдоним в файлах хранилища ключей? Создание элемента MembersInjector для . Предпочитают вместо этого запускать процессор кинжала над этим классом Подвеска в Google Play Store Как я могу запретить Android Studio автоматически сворачивать мои пакеты в навигации по проекту? Доступ к высокоскоростной fps-камере на Android Есть ли способ показать предварительный просмотр содержимого RecyclerView в редакторе Android Studio? Как добавить горизонтальный RecyclerView в элемент списка Разрешение отклонено (отсутствует разрешение INTERNET?): Но предоставляется разрешение Любая причина вообще направить блокировку бесплатного приложения? На какую ошибку это указывает – «new_window_surface возвращает 0x3000» Загружать изображения из дискового кэша с помощью Picasso, если в автономном режиме Как удалить строки из скомпилированного двоичного файла (.so)

Как избежать вложенных весов?

У меня есть xml-макет для ввода pincode:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FF000000" android:orientation="vertical" android:weightSum="1" > <LinearLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_margin="5dp" android:layout_weight="0.2" android:background="@android:drawable/edit_text" android:gravity="center_vertical" android:orientation="horizontal" > <EditText android:id="@+id/pinDisplay" android:layout_width="0dip" android:layout_height="fill_parent" android:layout_weight="0.85" android:background="@null" /> <ImageButton android:id="@+id/backspace" style="@android:style/Widget.Button" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="center_vertical" android:layout_margin="3dp" android:layout_weight="0.15" android:gravity="center" android:src="@android:drawable/ic_input_delete" /> </LinearLayout> <!-- Keypad section --> <LinearLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="0.8" android:baselineAligned="false" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_marginLeft="5dip" android:layout_marginRight="4dip" android:layout_weight="1" android:orientation="horizontal" > <Button android:id="@+id/one" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="1" android:textAppearance="@android:attr/text" /> <Button android:id="@+id/two" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="2" /> <Button android:id="@+id/three" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="3" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="0sp" android:layout_marginLeft="5dip" android:layout_marginRight="4dip" android:layout_weight="1" android:orientation="horizontal" > <Button android:id="@+id/four" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="4" /> <Button android:id="@+id/five" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="5" /> <Button android:id="@+id/six" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="6" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="0sp" android:layout_marginLeft="5dip" android:layout_marginRight="4dip" android:layout_weight="1" android:orientation="horizontal" > <Button android:id="@+id/seven" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="7" /> <Button android:id="@+id/eight" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="8" /> <Button android:id="@+id/nine" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="9" /> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="0sp" android:layout_marginBottom="10dip" android:layout_marginLeft="5dip" android:layout_marginRight="4dip" android:layout_weight="1" android:orientation="horizontal" > <Button android:id="@+id/ok" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:enabled="false" android:text="OK" android:textColor="#B8B8B8" /> <Button android:id="@+id/zero" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="0" /> <Button android:id="@+id/clear" android:layout_width="0sp" android:layout_height="fill_parent" android:layout_weight="1" android:text="Clear" /> </LinearLayout> </LinearLayout> </LinearLayout> 

Макет в порядке, но я получаю много предупреждений Lint о вложенных весах.

Вложенные веса плохи для производительности

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

Solutions Collecting From Web of "Как избежать вложенных весов?"

Вы можете использовать RelativeLayout, чтобы избежать вложенных весов.

Вложенные веса плохи для производительности, потому что число измерений увеличивается экспоненциально с каждым вложенным.

В общем, вы должны попытаться использовать RelativeLayout вместо вложенности многих LinearLayouts.

Из документации :

Примечание. Хотя вы можете вложить один или несколько макетов в другой макет для достижения вашего дизайна пользовательского интерфейса, вы должны стремиться к тому, чтобы иерархия макета была как можно более мелкой. Ваш макет рисуется быстрее, если у него меньше вложенных макетов (иерархия с широким представлением лучше, чем иерархия глубокого представления).

Но когда вам нужны веса, как сейчас, RelativeLayout вам не поможет; Вместо этого я предлагаю использовать TableLayout для вашей клавиатуры, чтобы уменьшить количество вложенных макетов.