Атрибут не объявлен (Android) по базовым атрибутам xml
Я новичок в этой разработке Android, и я считаю, что это очень запутанно. Я пытаюсь получить фоновое изображение в представлении, и я попытался использовать этот пример
Добавить фоновое изображение в форму xml Android, но он выглядит очень плохо (растровые изображения, которые вы знаете)
Итак, я думал, что векторы могут быть забавными. Единственная проблема заключается в том, что я не могу заставить даже официальные примеры работать. Я пробовал установить это как фон
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="256dp"
android:width="256dp"
android:viewportWidth="32"
android:viewportHeight="32">
<path android:fillColor="#8fff" android:pathData="M20.5,9.5
c-1.955,0,-3.83,1.268,-4.5,3
c-0.67,-1.732,-2.547,-3,-4.5,-3
C8.957,9.5,7,11.432,7,14
c0,3.53,3.793,6.257,9,11.5
c5.207,-5.242,9,-7.97,9,-11.5
C25,11.432,23.043,9.5,20.5,9.5z" />
Он отображает в дизайне и все, но атрибуты viewportWidth
, viewportHeight
, fillColor
и pathData
показывают одно и то же предупреждение:
The 'http://schemas.android.com/apk/res/android:viewportWidth' is not declared
Если я проверю файл, уверен, его там нет. Означает ли это, что я должен явно объявлять все эти типы? Кажется немного странным для ванильных примеров.
![]()
Обратите внимание, что если я удалю "android" перед предупреждениями, он удалит предупреждения, но все равно даст мне ту же ошибку развертывания
Android.Views.InflateException: Binary XML file line #1: Error inflating class <unknown>
Ответы
Ответ 1
Проблема
Intellisense не смог выбрать атрибуты, которые мы вводим, хотя эти атрибуты существуют в SDK android SDK и показывает, что этот атрибут не объявлен.
Решение
У меня возникла эта проблема вчера в Visual Studio 2015 и начал искать об этом, в конечном итоге я обнаружил, что эти два файла отсутствуют в папке XML-схемы в Visual Studio, поэтому загрузите указанные ниже ссылки на файлы,
Просто загрузите и переместите файлы вручную в C:\Program Files (x86)\Microsoft Visual Studio 14.0\Xml\Схемы или просто добавьте эти схемы в Visual Studio. Эта ошибка исчезнет, я решил эту проблему с этой процедурой.
Ответ 2
Как я знаю, те атрибуты (которые вы указали выше) не определены в jdk_1.7.
Вместо этого используйте jdk_1.8.
Вы можете настроить путь к JDK следующим образом:
Microsoft Visual Studio 2015 → Инструменты → Параметры → Xamarin → Настройки Android → JDK Местоположение [Изменить]
Примечание
Если вы используете Microsoft Visual Studio 2015 Update 3 или одну из ранних версий, я заверяю вас, что предупреждение не исчезнет... это уже проблема Intellisense (а не JDK). Он должен быть исправлен в будущем выпуске.
![Снимок экрана]()
Ответ 3
Создайте основанное на шаблоне приложение Xamarin.Android
.
Взяв пример vector.xml
из документа VectorDrawable из Google/Android и создав его как файл .xml
в разделе Resources/drawable
в проекте:
<?xml version="1.0" encoding="UTF-8" ?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="64dp"
android:width="64dp"
android:viewportHeight="600"
android:viewportWidth="600" >
<group
android:name="rotationGroup"
android:pivotX="300.0"
android:pivotY="300.0"
android:rotation="45.0" >
<path
android:name="v"
android:fillColor="#000000"
android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
</group>
</vector>
Обновите свой Resouce/layout/Main.axml
, чтобы включить вектор на фоне LinearLayout
и Button
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/vector"
>
<Button
android:id="@+id/myButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:background="@drawable/vector"
/>
</LinearLayout>
Результаты в:
![введите описание изображения здесь]()
Не очень хороший пример из Google, но он работает.
Очистка вашего вектора и настройка цвета на красный
<?xml version="1.0" encoding="UTF-8" ?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="256dp"
android:width="256dp"
android:viewportHeight="60"
android:viewportWidth="60" >
<group
android:name="rotationGroup"
android:pivotX="0.0"
android:pivotY="0.0"
android:rotation="0.0" >
<path
android:name="so"
android:fillColor="#F44336"
android:pathData="M20.5,9.5
c-1.955,0,-3.83,1.268,-4.5,3
c-0.67,-1.732,-2.547,-3,-4.5,-3
C8.957,9.5,7,11.432,7,14
c0,3.53,3.793,6.257,9,11.5
c5.207,-5.242,9,-7.97,9,-11.5
C25,11.432,23.043,9.5,20.5,9.5z" />
</group>
</vector>
Результаты в:
![введите описание изображения здесь]()