Структура пакета в основном: app>src>main>com.example.customviews
, внутри которой существует папка view
, содержащая файл CustomView.java
.
Внутри файла attrs.xml
в папке res
я определяю stylable
следующим образом:
<resources>
<declare-styleable name="PieChart">
<attr name="showText" format="boolean"/>
<attr name="labelPosition" format="enum">
<enum name="left" value="0"/>
<enum name="right" value="1"/>
</attr>
</declare-styleable>
</resources>
В activity_main.xml
(Mainactivity.java
также находится в com.example.customviews
каталог) Я попытался определить пространство имен для своих пользовательских атрибутов следующим образом:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
xmlns:custom="http://schemas.android.com/apk/res/com.example.customviews"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity"
android:gravity="center">
...
...
...
</LinearLayout>
Но для определенного пространства имен android выдает мне следующее сообщение об ошибке в редакторе:
В проектах Gradle всегда используйте http://schemas.android.com/apk/res-auto для пользовательских атрибутов меньше ... (Ctrl + F1) Информация о проверке: в проектах Gradle фактический пакет, используемый в окончательном APK, может отличаться; Например, вы можете добавить суффикс пакета .debug в одной версии, а не в другой. Поэтому вам не следует жестко кодировать пакет приложения в ресурсе; вместо этого используйте специальное пространство имен http://schemas.android.com/apk/res-auto, которое заставит инструменты определить правильное пространство имен для ресурса независимо от фактического пакета, использованного во время сборки.
Это приносит следующие два вопроса:
- Что делает URI
http://schemas.android.com/apk/res-auto
, он динамически разрешается с помощью android? Как и для app
пространства имен, оно разрешается в один URI, а для custom
пространства имен оно используется для другого? - В документации android используется пользовательский URI, как я определил выше , почему ошибка возникает в android studio, когда я это делаю?