LinearLayout - ошибка Lint при использовании файла стиля (все еще работает, хотя)

Проблема: я получаю ошибку lint и предупреждение о стилях, которые работают, при определении ориентации LinearLayout в файле стилей, но не при определении ориентации непосредственно на элементе. Даже если свойство выбрано из файла стилей.

У меня есть базовый стиль для всех моих действий, содержащий следующее:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="StandardActivity">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">fill_parent</item>
        <item name="android:orientation">vertical</item>
    </style>
</resources>

В моем макете, если я добавлю этот код:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/StandardActivity">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical">

    ...

    </LinearLayout>

    ...

</LinearLayout>

На layout_width Я получаю предупреждение Lint:

Use a 'layout_width' of '0dp' instead of 'fill_parent' for better performance

И на layout_height Я получаю ошибку Lint:

Suspicious size: this will make the view invisible, probably intended for 'layout_width'

Все работает, как ожидалось, и макет занимает orientation атрибут установлен в StandardActivity, Однако ошибка и предупреждение действительны только в том случае, если ориентация установлена ​​на horizontal, Как я могу получить пух в Android Studio, чтобы понять, что ориентация установлена ​​в файле стиля?

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

1 ответ

Там нет проблемы, IDE, вероятно, позади. Это предположение сделано, что layout_orientation является horizontalв этом случае эти ошибки будут правильными. Но, как вы сделали layout_orientation=vertical в style Все отлично. Если вы перенесете эти переменные прямо в макет, эти ошибки должны исчезнуть. PS fill_parent устарела, использовать match_parent

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"   >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="vertical">

    ...

    </LinearLayout>

    ...

</LinearLayout>
Другие вопросы по тегам