2015-01-16 3 views
0

у меня есть это в Резе/макетеAndroid Studio - избежать предупреждения макета для различных интерфейсов

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/txt" 
    android:layout_alignBottom="@+id/txt" 
    android:layout_toRightOf="@+id/txt" 
    android:text="@string/..." 
    android:layout_marginLeft="3dp" 
    android:textAppearance="?android:attr/textAppearanceSmall" /> 

я получаю предупреждение, layout_toRightOf должна быть layout_toEndOf и что layout_marginLeft должны быть layout_marginStart для лучшей поддержки справа налево раскладок.

Итак, я сделал 2 макета и положил другой внутри макета-v17 и изменил то, что он хотел. В то время как layout-v17 в порядке, предупреждения в исходном файле макета все еще существуют, как я могу сообщить, что я уже справился с этим?

ответ

3

Эти предупреждения поступают от Lint, инструмента, реализованного в вашем SDK, который проверяет весь проект, ищущий потенциальные ошибки. Проверить this и this вне.

Вот list пуха проверок, каждая из которых может быть проигнорировано с помощью tools:ignore= attribuite, до тех пор, как вы определили xmlns:tools="http://schemas.android.com/tools" на ваш взгляд корня. Конечно, эта функция должна использоваться только тогда, когда это необходимо, так как проверки lint могут быть полезны для предотвращения ошибок.

Атрибут, связанный с вашей проблемой, который в любом случае не должен быть действительно раздражающим, равен RtlHardcoded.

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:ignore="RtlHardcoded" > 

    <TextView 
     android:text="@string/text" 
     android:layout_toRightOf="@+id/txt" /> 
</RelativeLayout> 

Обратите внимание, что вы также можете отключить конкретные Lint проверки из ваших вариантов IDE для всего проекта, но я бы не сделать это. (в Android Studio, Project Settings -> Inspections).

Редактировать: Обратите также внимание, что это не игнорирует настоящую проблему. Я предложил вам сделать это, потому что я думал, что вы просто «обеспокоены» предупреждением о ситуации, с которой вы уже справились. В этих случаях tools:ignore можно использовать, чтобы сказать Lint «Хорошо, я знаю об этой проблеме, и я уже справился с ней» (в большинстве случаев Lint достаточно умен, чтобы заметить сам по себе).

Что касается макетов справа налево, лучшим способом борьбы с ними является поместить оба атрибута слева (справа)/начала (конца). В API> 17 последний будет иметь приоритет.

+0

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

+0

Это не игнорирует проблемы. Вы просто говорите, что Lint не беспокоится о устройствах справа налево в этом макете, и это абсолютно правильно, потому что новые устройства загружают ваш альтернативный макет. – natario

+1

Кроме того, правильным способом управления этой ситуацией является использование атрибутов left-start/right-end. – natario

0

Помещенный дважды layout_toRightOf и layout_toEndOf в том же TextView

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toEndOf="@+id/txt" 
    android:layout_toRightOf="@+id/txt" 
    /> 
+2

Проблема в том, что для этого атрибута или другого, он говорит, что некоторые устройства будут разбиваться, если я положу оба вместо того, чтобы просто игнорировать более новый. Вот почему я сделал 2 разных файла макета – Amos

0

Попробуйте

<TextView 
android:id="+id/textView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignBaseline="id/txt" 
android:layout_alignBottom="id/txt" 
android:layout_toRightOf="id/txt" 
android:text="@string/..." 
android:layout_marginLeft="3dp" 
android:textAppearance="?android:attr/textAppearanceSmall" /> 

или

<TextView 
android:id="+id/textView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignBaseline="txt" 
android:layout_alignBottom="txt" 
android:layout_toRightOf="txt" 
android:text="@string/..." 
android:layout_marginLeft="3dp" 
android:textAppearance="?android:attr/textAppearanceSmall" /> 
Смежные вопросы