Подтвердить что ты не робот

Атрибут не объявлен (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>
4b9b3361

Ответ 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>

Результаты в:

введите описание изображения здесь