LinearLayout или его родитель LinearLayout бесполезны. Могу ли я игнорировать предупреждающее сообщение?

Я сталкиваюсь с проблемами макета гнезда и выбрасываю некоторые исключения. Ошибка: «Этот макет LinearLayout или его родительский LinearLayout бесполезен…». Я знаю, что могу игнорировать это предупреждение с помощью этой настройки.

Параметр: «Путь сборки» -> «Настроить путь сборки».... В разделе «Настройки Android Lint» найдите UselessParent и установите его серьезность для игнорирования или нажмите «Игнорировать все».

Однако графический макет Eclipse не может ничего отображать и отображает сообщение об ошибке: «Индекс: 0, размер 0, сведения об исключении регистрируются в окне > Показать представление > Журнал ошибок».

Как я могу сделать так, чтобы графический макет отображал макет гнезда??

Вот мой код:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="@drawable/menu_bg2"
        android:orientation="vertical" >

        <ImageButton
            android:id="@+id/imageButton1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/menu_item1"
            android:src="@drawable/alarm2x" />

        <ImageButton
            android:id="@+id/imageButton2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/menu_item2"
            android:src="@drawable/bank2x" />

        <ImageButton
            android:id="@+id/imageButton3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/menu_item3"
            android:src="@drawable/brief_case2x" />

        <ImageButton
            android:id="@+id/imageButton4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/menu_item4"
            android:src="@drawable/trolley2x" />

        <ImageButton
            android:id="@+id/imageButton5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="@string/menu_item5"
            android:src="@drawable/calculator2x" />

    </LinearLayout>
</LinearLayout>

Спасибо всем.


person KingWu    schedule 18.07.2012    source источник
comment
Какую ошибку показывает Error Log?   -  person Jin35    schedule 18.07.2012
comment
вот какая польза от второго макета.......   -  person RajaReddy PolamReddy    schedule 18.07.2012
comment
добавьте еще одно представление в родительский макет (может быть пустым или полезным, если есть), чтобы удалить предупреждение. В этом коде горизонтальная компоновка бесполезна.   -  person Kamal    schedule 18.07.2012
comment
Re Jin35: вот моя ошибка. dl.dropbox.com/u/78582670/error.png Относительно RajaReddy: Я хочу воспроизвести анимацию перевода для кнопки изображения в линейном макете. Я хочу, чтобы кнопки перемещались снизу вверх. У вас есть хорошая идея? Re Kamal: горизонтальный макет полезен, потому что в будущем я добавлю в него несколько видов.   -  person KingWu    schedule 18.07.2012


Ответы (6)


У вас есть два LinearLayout, один из них пока бесполезен. Это предупреждение предлагает вам удалить один из них. так:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/LinearLayout1"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:background="@drawable/menu_bg2"
          android:orientation="vertical" >

     <!-- your other ImageView etc.-->
</LinearLayout>
person Adil Soomro    schedule 18.07.2012
comment
Да, я понимаю. На самом деле, я пишу таким образом, потому что хочу, чтобы кнопки изображения двигались снизу вверх. Я не хочу жестко кодировать эту анимацию. Как я могу сделать? И есть ли у вас лучший способ сделать это? - person KingWu; 18.07.2012
comment
Вы можете сделать это с помощью одного LinearLayout. есть много примеров. например, это сообщение касается кнопки анимации снизу вверх - person Adil Soomro; 18.07.2012

Потому что в первом LinearLayout в нем всего 1 представление, и это LinearLayout.

Вот иллюстрированная структура:

LinearLayout
    LinearLayout
        ImageButton
        ImageButton
        ImageButton
        ImageButton
        ImageButton
    // You should add another View or ViewGroup for the first LinearLayout

LinearLayout является подклассом ViewGroup и предназначен для группировки некоторых представлений, по крайней мере, 2 (CMIIW).

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

Извините, если мое объяснение на английском языке плохое.

person Kiddo    schedule 08.04.2013

Вы можете просто добавить это в свой родительский LinearLayout:

tools:ignore="UselessParent"

По умолчанию Android Studio показывает эти предупреждения, если они бесполезны. tools:ignore="UselessParent" предотвращает появление этого предупреждения.

person Community    schedule 26.10.2018

Вы открыли 2 linearlayout, но закрывается только 1 linearlayout.

Однако второй linearlayout не имеет смысла, так как вы кладете коробку внутрь коробки, а затем вставляете элементы во вторую.

person JesusS    schedule 18.07.2012
comment
ммм, закрытие </LinearLayout> отсутствовало из-за неправильной формы. но это было там, я исправил это. :) - person Adil Soomro; 18.07.2012
comment
потому что я хочу оживить вторую коробку. я думаю, что вложенный макет может сделать это. так что я иду вперед. Есть ли у вас какие-либо идеи? - person KingWu; 18.07.2012
comment
Адиль Соомро: Что вы имеете в виду, что закрывающий ‹/LinearLayout› отсутствовал?? На самом деле в моем XML есть два закрывающих ‹/LinearLayout›. Что со мной не так? - person KingWu; 18.07.2012
comment
@KingWu: ваш закрывающий тег не был виден из-за неправильного форматирования, я отформатировал его снова. так теперь видно. - person Adil Soomro; 18.07.2012
comment
тогда в макете нет ничего плохого. Не могли бы вы посмотреть журнал ошибок? окно-›показать вид->журнал ошибок - person JesusS; 18.07.2012
comment
я разместил ссылку. Вы можете пойти посмотреть на это. Спасибо. - person KingWu; 18.07.2012

Вы могли бы попробовать

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

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/menu_bg2"
    android:orientation="vertical" >

Однако я никогда не доверяю графическому макету в Eclipse.

Редактировать :

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

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical" >
person stuckedoverflow    schedule 18.07.2012
comment
Извиняюсь. Оно работает. Но я действительно хочу, чтобы макет гнезда был Wrap_content. - person KingWu; 18.07.2012
comment
Попробуйте поставить wrap_content на layout_height. - person stuckedoverflow; 18.07.2012
comment
Когда я добавляю фоновое изображение во второй макет, например, android:background=@drawable/menu_bg2. Тогда не могу работать =[ - person KingWu; 18.07.2012

Возможно вам поможет:

android:layout_alignWithParentIfMissing ="true"
person A.A    schedule 23.09.2014
comment
Я думаю, что было бы полезнее для ОП и других посетителей, если бы вы добавили какое-то объяснение своему намерению. - person Reporter; 23.09.2014