web-dev-qa-db-fra.com

L'attribut n'est pas déclaré (Android) sur les attributs XML de base

Je suis nouveau dans ce Android, et je trouve la mise en page vraiment déroutante. J'essaie d'avoir une image d'arrière-plan sur une vue, et j'ai essayé d'utiliser cet exemple - Ajouter une image d'arrière-plan pour façonner dans xml Android , mais ça a l'air très mauvais (bitmaps vous savez)

J'ai donc pensé que les vecteurs pouvaient être amusants. Le seul problème est que je ne peux même pas faire fonctionner les exemples officiels. J'ai essayé de définir cela comme arrière-plan

<?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" />

Il s'affiche dans la vue de conception et tout, mais les attributs viewportWidth, viewportHeight, fillColor et pathData affichent tous le même avertissement:

The 'http://schemas.Android.com/apk/res/Android:viewportWidth' is not declared

Si je vérifie le fichier, bien sûr, il n'est pas là. Est-ce à dire que je dois déclarer explicitement tous ces types? Cela semble un peu étrange pour les exemples Vanilla.

Notez que si je supprime "Android" devant les avertissements, il supprimera les avertissements mais me donnera toujours la même erreur de déploiement

Android.Views.InflateException: Binary XML file line #1: Error inflating class <unknown>
26
LaughingMan

Problème

Intellisense n'a pas pu choisir les attributs que nous tapons bien que ces attributs existent dans Android SDK et montrent que cet attribut n'est pas déclaré.

Solution

J'ai eu ce problème hier dans Visual Studio 2015 et j'ai commencé à chercher à ce sujet, j'ai finalement trouvé que ces deux fichiers manquaient dans le dossier de schéma XML dans Visual Studio, alors téléchargez ces liens de fichiers donnés ci-dessous,

  1. https://github.com/atsushieno/monodroid-schema-gen/blob/master/Android-layout-xml.xsd
  2. https://github.com/atsushieno/monodroid-schema-gen/blob/master/schemas.Android.com.apk.res.Android.xsd

Téléchargez et déplacez simplement les fichiers manuellement vers C:\Program Files (x86)\Microsoft Visual Studio 14.0\Xml\Schemas ou ajoutez simplement ces schémas dans Visual Studio. Cette erreur aura disparu, j'ai résolu ce problème avec cette procédure.

43
Usman

Comme je le sais, ces attributs (que vous avez mentionnés ci-dessus) ne sont pas définis dans jdk_1.7 .

Utilisez plutôt jdk_1.8.

Vous pouvez configurer le chemin d'accès au JDK de la manière suivante:

Microsoft Visual Studio 2015 -> Outils -> Options -> Xamarin -> Android -> Emplacement JDK [Modifier]

Remarque

Si vous utilisez Microsoft Visual Studio 2015 Update 3 ou l'une des versions antérieures, je vous assure que l'avertissement ne disparaîtra pas ... c'est déjà le problème d'Intellisense (pas celui du JDK). Il doit être corrigé dans la future version.

Screenshot

3
AndreyWD

Créez un modèle basé sur Xamarin.Android app.

Prenant le vector.xml exemple de Google/Android VectorDrawable docs et en créant un .xml fichier sous le Resources/drawable répertoire dans le projet:

<?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>

Mettez à jour votre Resouce/layout/Main.axml pour inclure le vecteur à l'arrière-plan du LinearLayout et du 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>

Résulte en:

enter image description here

Pas un joli exemple de Google, mais ça marche.

Nettoyage de votre vecteur et définition de la couleur rouge

<?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>

Résulte en:

enter image description here

1
SushiHangover