2012-02-14 13 views
20

Mam prosty układ, ale mogę ustawić tylko ciąg tekstowy. Jak ustawić znacznik integer?Jak ustawić liczbę całkowitą do widżetu w pliku układu XML?

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

UPDATE

I okazało się, jak ustawić znaczniki całkowitą w układzie xml. Musimy określić zmienną całkowitą w dowolnym pliku zasobów xml. To powinno wyglądać tak:

res/wartości/value.xml:

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

A teraz jesteśmy wolni, aby użyć "@ integer/INT1" lub "@ integer/int2" jako znaczniki dla naszego xml wzory, na przykład:

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

jednak w moim przypadku wolałem, aby ustawić znacznik programowo :)

+1

można wyjaśnić nieco więcej o swoim zamiarze? – Ajay

+0

Obecnie, gdy używam View.getTag(), otrzymuję String "1". Co należy określić w układzie xml, aby uzyskać liczbę całkowitą 1 zamiast ciągu "1"? –

+0

Mogę dodać atrybut id do ImageView , pobrać go w kodzie i użyć View.setTag (1), ale chcę wiedzieć, jak ustawić liczbę całkowitą w pliku układu XML. –

Odpowiedz

0

dostarczyć tag dla tego widoku zawierającego ciąg znaków, które mają być pobrane później View.getTag() lub poszukiwanej za z View.findViewWithTag().

Musi to być wartość ciągu, przy użyciu '\\;', aby uniknąć znaków, takich jak '\\n' lub '\\uxxxx' dla znaku Unicode.

Aby uzyskać więcej informacji, przejdź do android:tag

15

w XML można ustawić tylko String. Ale w kodzie można użyć View.setTag(int value);, ponieważ zajmuje Object. Aby odczytać wartość co potrzeba do oddania go do Integer int value = (Integer)view.getTag();

+0

To zadziałało dla mnie, dzięki! –

+0

to może być użyte w pętli (iteracja poprzez obiekty potomne), aby wygenerować oczekiwany wynik w pytaniu, dzięki temu zadziałało dla mnie. – SadeepDarshana

+0

Integer.valueOf (tag) powinien być w stanie odczytać oba bez problemu, pozwalając ci ustawić wartość String w XML, a następnie od tego czasu pisać Integer bez obawy o ClassCastExceptions –

4

Od edytować autora I próbował użyć @integer/int2 aby ustawić znacznik w postaci liczby całkowitej, ale wciąż wydaje się, że getTag() wraca tag jako String (przynajmniej w Jellybean). Integer.parseInt(String) można przekonwertować numer String na Integer i @integer/int2, aby sprawdzić, czy Twój tag jest prawidłowy: Integer. Więc jeśli chcesz umieścić w tagu Integer przez XML, który jest prawdopodobnie najlepszą trasą. Minusem, ponieważ używa ona parseInt prawdopodobnie zajmuje trochę więcej czasu niż przechowywanie jako int przez cały czas.

+0

nie przejmuj się wydajnością parseInt(), która jest nth z nth razy lepsza niż nadmuchanie układu :) – comeGetSome

+0

@comeGetSome Nie martwię się, wspomnę tylko. –

2

Użyłem następujący aby ustawić znacznik w formacie XML i obsługiwać go później w kodzie:

<?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 
Powiązane problemy