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>
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,
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.
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.
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:
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: