Использование префикса пространства имен без андроида в дочерних элементах в макете

Я пытаюсь использовать пользовательские атрибуты в некоторых макетах Android, но я получаю сообщение об ошибке (из Eclipse), когда я пытаюсь использовать префикс пространства имен, отличный от android: в дочернем элементе. Обратите внимание, что он работает нормально, когда я использую custom: префикс пространства имен в корневом / родительском элементе в файле, а не в дочернем элементе.

Например, вот простой макет с указанным пространством имен:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:custom="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" custom:my_tag1="whatever"> <!-- compiles fine --> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="fitCenter" custom:my_tag2="true"/> <!-- generates an error --> </LinearLayout> 

Ошибка, которую дает Eclipse (только при второй попытке использовать префикс custom: :):

Неожиданный префикс пространства имен «custom» найден для тега ImageView.

Если я сделаю свой корневой элемент ImageView вместо LinearLayout , префикс будет принят. Таким образом, это просто проблема с использованием префикса пространства имен в дочернем элементе.

Кроме того, если я попытаюсь добавить в ImageView другой атрибут xmlns:custom="http://schemas.android.com/apk/res-auto" , он также жалуется.

Если это помогает, вот файл attrs.xml который я использую с приведенным выше:

 <?xml version="1.0" encoding="utf-8"?> <resources> <attr name="my_tag1" format="string"/> <attr name="my_tag2" format="boolean"/> </resources> 

Я видел некоторые онлайн-материалы, которые заставляют меня думать, что я хочу сделать, должно быть возможно. Например, в принятом ответе здесь Qberticus использует префикс «все равно» в дочернем классе. Точно так же в сообщении здесь .

Я не понимаю. Является ли использование префикса пространства имен, отличного от android, просто недопустимым для дочерних элементов, или я делаю что-то неправильно?

Solutions Collecting From Web of "Использование префикса пространства имен без андроида в дочерних элементах в макете"

Его можно игнорировать, я всегда делал это, и у меня не было никаких проблем. Чтобы убрать его, вам необходимо установить следующее:

  1. Добавить xmlns:tools="http://schemas.android.com/tools" в корневой режим
  2. Добавить tools:ignore="MissingPrefix" в текстовое представление

Однако на стороне примечания я обычно использую пользовательские атрибуты с пользовательскими представлениями 🙂