2012-02-14 9 views
20

Ho un layout semplice, ma posso solo impostare il tag stringa. Come impostare il tag intero?Come impostare un tag intero su un widget nel file di layout xml?

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:tag="1" 
    android:src="@drawable/image" /> 

UPDATE

ho scoperto come impostare i tag integer nel layout xml. Dobbiamo specificare una variabile intera in qualsiasi file di risorse xml. Questo dovrebbe essere simile che:

res/Valori/value.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<resources> 
<integer name="int1">15</integer> 
<integer name="int2">1</integer> 
</resources> 

e ora siamo liberi di utilizzare "@ integer/int1" o "@ integer/int2" come tag per il nostro XML widget, ad esempio:

<ImageView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:tag="@integer/int2" 
android:src="@drawable/image" /> 

Tuttavia, nel mio caso ho preferito impostare tag di programmazione :)

+1

Può spiegare po 'di più circa la vostra intenzione? – Ajay

+0

Al momento, quando utilizzo View.getTag(), ottengo String "1". Cosa dovrei specificare nel layout xml per ottenere Integer 1 invece di String "1"? –

+0

Posso aggiungere l'attributo id a ImageView , inserirlo nel codice e utilizzare View.setTag (1), ma voglio sapere come impostare il tag intero nel file di layout xml. –

risposta

0

Fornire un tag per questa vista contenente una stringa, per essere recuperato in seguito con View.getTag() o ricercate per con View.findViewWithTag().

deve essere un valore stringa, usando '\\;' per sfuggire personaggi come '\\n' o '\\uxxxx' per un carattere Unicode.

Per maggiori informazioni vai a android:tag

15

in XML è possibile impostare solo String. Ma nel codice è possibile utilizzare View.setTag(int value); perché accetta Object. Per leggere un valore è necessario gettarlo ai Integer int value = (Integer)view.getTag();

+0

Questo ha funzionato per me, grazie! –

+0

questo potrebbe essere usato in un ciclo (iterando attraverso oggetti figlio) per generare il risultato atteso nella domanda, grazie a questo ha funzionato per me. – SadeepDarshana

+0

Numero intero.valueOf (tag) dovrebbe essere in grado di leggere entrambi senza problemi, consentendo di impostare un valore di stringa in XML e quindi scrivere integer da quel momento senza preoccuparsi di ClassCastExceptions –

4

Dalla modifica dell'autore ho cercato di usare @integer/int2 per impostare il tag come un intero, ma sembra comunque che getTag() sta tornando il tag da usare come String (almeno in Jelly Bean). Integer.parseInt(String) può convertire un String in un Integer e @integer/int2 in grado di verificare che il tag sia un valore corretto Integer. Quindi se vuoi mettere un Integer in un tag tramite XML è probabilmente il percorso migliore. Lato negativo, dal momento che usa parseInt probabilmente ci vuole un po 'più di tempo che averlo memorizzato come int per tutto il tempo.

+0

non preoccuparsi delle prestazioni di parseInt() che è l'ennesima volta migliore di gonfiando un layout :) – comeGetSome

+0

@comeGetSome Non sono preoccupato, solo menzionando. –

2

ho usato il seguente per impostare il tag in XML e gestirlo in seguito nel codice:

<?xml version="1.0" encoding="UTF-8"?> 
<resources> 
<string name="item_tag">1</string> 
</resources> 

<!-- TextView with Tag --> 
<TextView 
android:id="@+id/item_with_tag" 
android:tag="@string/item_tag"/> 

// retrieve the tag 
int itemTag = Integer.valueOf((String) textView.getTag()); // itemTag == 1 
Problemi correlati