Intereting Posts
Как проверить, разрешено ли разрешение «android.permission.PACKAGE_USAGE_STATS»? Сделайте кнопку «вверх», как кнопка «назад» на Android Использование пользовательской кнопки входа с Твиттером Twitter? Как обращаться с изменениями ориентации экрана, когда есть asyntask, работающая с android 4.x Как использовать putExtra () и getExtra () для строковых данных Как создать UUID из строки в android Javascript не работает в деятельности WebView Android: Как включить / отключить пункт меню выбора при нажатии кнопки? Закрытие приложения Android при завершении отладки кода Кажется, что ваше устройство не поддерживает камеру (или заблокировано) Как сделать значок пусковой установки Android Когда использовать CursorJoiner / MatrixCursor / MergeCursor? Не нашел класс «android.support.v7.internal.widget.TintManager» по пути: DexPathList Есть ли способ развернуть дельта-изменения на Android-устройстве? Почему мы всегда печатаем текст в Android / Java?

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

Я пытаюсь использовать пользовательские атрибуты в некоторых макетах 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" в текстовое представление

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