Ответ 1
измените код xmlns: app = "http://schemas.android.com/tools" следующим образом:
xmlns:app="http://schemas.android.com/apk/res-auto"
Это сделало мою работу.
Я искал свою проблему, но не могу найти решение.
Когда я пытаюсь создать подписанный APK, я получаю эту ошибку:
Error:(6) Error: Suspicious namespace and prefix combination [NamespaceTypo]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Explanation for issues of type "NamespaceTypo":
track these down.
xmlns:app="http://schemas.android.com/tools"
obscure error messages. This check looks for potential misspellings to help
Accidental misspellings in namespace declarations can lead to some very
Это фрагмент этого файла макета:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fab="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/tools"
app:layout_behavior="@null"
android:layout_gravity="bottom|right">
измените код xmlns: app = "http://schemas.android.com/tools" следующим образом:
xmlns:app="http://schemas.android.com/apk/res-auto"
Это сделало мою работу.
Ваши первые две строки кода xml неверны. Весь XML файл должен выглядеть следующим образом:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/tools"
app:layout_behavior="@null"
android:layout_gravity="bottom|right">
Первые две строки - это объявление файла xml. Хотя вы можете просмотреть фактический макет страницы в представлении дизайна, в макете itslef все еще будут проблемы при построении, так как ему нужен тег инструментов xml.
Цель этого пространства имен - иметь возможность записывать информацию в XML файлы и лишить эту информацию, когда приложение упаковано, чтобы не было времени выполнения или ограничения размера загрузки. Это специальное пространство имен Android.
Надеюсь, что это поможет:)
Пространство имен tools
должно использоваться для инструментов предварительного просмотра xml на студии android. Например, если вы проверяете представление, которое по умолчанию скрыто, но вы хотите увидеть его в своем предварительном просмотре, вы должны использовать tools:visibility=visible
.
Пространство имен app
, насколько мне известно, используется для добавления ваших пользовательских представлений и макетов в пространство имен xml, которое вы хотите добавить в свои представления.
Итак, все ваши ответы правильные, но я думаю, никто не объяснил, что делают пространства имен. Поэтому для конвенции я рекомендую их использовать следующим образом:
xmlns:yourAppName="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
У меня была такая же ошибка. Моя проблема заключалась в том, что Android Studio автоматически помещает xmlns в мою вкладку макета вместо тэга корневого представления при использовании привязки данных.
Другими словами, когда у меня установлен Android Studio префикс app
, он сделал это:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:custom="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/tools"> <!-- added namespace here ... -->
<data>
<variable
name="viewModel"
type="com.example.ViewModel"/>
</data>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="..."
android:layout_height="..."
android:orientation="vertical"
app:backgroundResource="@{viewModel.someResource}"> <!-- ... when trying to resolve app -->
...
когда он должен был сделать это:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:custom="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewModel"
type="com.example.ViewModel"/>
</data>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/tools" <!-- should have added here -->
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="..."
android:layout_height="..."
android:orientation="vertical"
app:backgroundResource="@{viewModel.someResource}">
...