2016-05-05 20 views
19

Sono nuovo in questo sviluppo Android e trovo il layout molto confuso. Sto cercando di avere un'immagine di sfondo su una visione, e ho provato ad utilizzare questo esempio Add a background image to shape in xml Android, ma sembra molto male (bitmap si sa)L'attributo non è dichiarato (Android) sugli attributi xml di base

così ho pensato vettori potrebbe essere divertente. L'unico problema è che non riesco a far funzionare nemmeno gli esempi ufficiali. Ho provato a installare questo come sfondo

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

Rende nella vista di design e tutti, ma gli attributi viewportWidth, viewportHeight, fillColor e pathData tutti vedi lo stesso avviso:

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

Se controllo il file, abbastanza sicuro, non c'è. Ciò significa che devo dichiarare esplicitamente tutti questi tipi? Sembra un po 'strano per gli esempi di vaniglia.

Si noti che se mi tolgo la 'Android' di fronte alle avvertenze, rimuoverà gli avvertimenti, ma ancora mi danno lo stesso errore distribuzione

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

Quale versione di 'Xamarin' per Visual Studio è in esecuzione? E quale versione di 'Visual Studio'? Quali versioni di 'Android SDK'? – SushiHangover

+0

@SushiHangover studio visivo 2015 14.0.25123, Xamarin 4.0.3, Xamarin.Android 6.0.3.5 Sembra che l'ultimo SDK ho installato è API 22 (5.1.1) – LaughingMan

+0

@SushiHangover Ora ho aggiornato alla ultimi SDK, ma ahimè, nulla è cambiato – LaughingMan

risposta

31

Problema

Intellisense non poteva scegliere gli attributi che tipo, anche se questi attributi sono già esistenti nel SDK Android e mostra questo attributo non è dichiarato.

Soluzione

ho avuto questo problema ieri in Visual Studio 2015 e iniziato la ricerca su questo, in ultima analisi, ho scoperto che questi due file sono mancanti nella cartella schema XML in Visual Studio, in modo da scaricare questi file link riportati qui sotto ,

  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

È sufficiente scaricare e spostare manualmente i file in C: \ Programmi (x86) \ Microsoft Visual Studio 14.0 \ Xml \ Schemas o semplicemente aggiungere questi schemi in Visual Studio. Questo errore sparirà, ho risolto questo problema con questa procedura.

+0

Penso che questa sia la soluzione migliore. Ha funzionato per me –

+0

Mi hai appena salvato. Bello signore! –

+6

Appena installato VS 2017. Speravo che sarebbe stato risolto. Stessi problemi – RogerW

1

Creare un modello basato su Xamarin.Android app .

Prendendo l'esempio vector.xml dalle Google/Android VectorDrawable documenti e la creazione di che come file .xml nella directory Resources/drawable nel progetto:

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

Aggiornare il Resouce/layout/Main.axml per includere il vettore sullo sfondo della LinearLayout e le 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> 

Risultati in:

enter image description here

Non è un bell'esempio di Google, ma funziona.

Mettere in ordine la vettore e l'impostazione del colore per rosso

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

Risultati in:

enter image description here

+0

Ho provato anche quello, il problema è che Visual Studio non riconoscerà gli attributi del tag. Ho modificato la mia domanda e caricato uno screenshot in modo che tu possa vedere di cosa sto parlando – LaughingMan

3

Per quanto ne so, gli attributi (che si rilevare sopra) non sono definito in jdk_1.7.

Utilizzare invece jdk_1.8.

È possibile configurare il percorso del JDK nel seguente modo:

Microsoft Visual Studio 2015 -> Strumenti -> Opzioni -> Xamarin -> Impostazioni Android -> JDK Località [Cambia]

Osservazioni

Se si utilizza Microsoft Visual Studio 2015 Update 3 o una delle versioni precedenti, vi assicuro che l'avviso non scomparirà ... questo è già il problema del Intellisense (non il JDK). Deve essere risolto nella versione futura.

Screenshot

+2

Ricevo ancora l'avviso "attributo non dichiarato", ma ora il progetto è in esecuzione. Prima non ero in grado di distribuirlo –

+0

@Banana, sono contento di poterti aiutare! Ma l'avviso ** non scomparirà ... questo è già il problema di ** _ Intellisense _ ** (non quello di ** _ JDK _ **). Deve essere risolto nella versione futura. –

+0

Il mio utilizza jdk1.8.0_101 e mi dà ancora questo avviso e non verrà visualizzato correttamente in modalità progettazione. Sai perché? – Minh

Problemi correlati