2009-06-19 12 views
6

Z książki O'Reilly "Android Application Development" Rick Rogers, John Lombardo Zigurd Mednieks & Blake Meike, strona 23:@ w AndroidManifest.xml złożyć

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" 
    /> 

Od strony 44:

<application android:icon="@drawable/icon2"> 

Jakie jest znaczenie @ w każdym z powyższych fragmentów?

Odpowiedz

7

W tym przypadku:

android:layout_width="fill_parent" 

wartość atrybutu, android:layout_width, jest określona bezpośrednio wewnątrz cudzysłowów, fill_parent. W innym przypadku:

android:text="@string/hello" 

wartość atrybutu, android:text="@string/hello", jest określona w innym miejscu. Jest to sygnalizowane przez @ na początku łańcucha. W tym przykładzie jest to @string/hello. Wartość znajduje się w zasobie.

W sekcji "Wartości zasobów" pod adresem The AndroidManifest.xml File ze strony Android Developers. Znaleziono z linku w odpowiedzi allclaws.

wartości zasobów są wyrażone w następującym formacie

@ [opakowanie:] Typ: Nazwa

gdzie nazwę pakietu może zostać pominięty jeżeli zasoby są w tym samym opakowaniu jako aplikacja, typ, jest rodzajem zasobu - na przykład "ciąg" lub "ciągliwy" - a nazwa to nazwa, którą identyfikuje konkretny zasób.

6

staram się myśleć o nim jako skrót, który ma do czynienia z, gdzie znajdują się zasoby, tak:

W normalnej konfiguracji, to byłoby coś jak:

@ rozciągliwej/ikony =/PROJECT_ROOT/RES/odkształcalne/icon.png

@ ciąg/hello = /PROJECT_ROOT/res/values/strings.xml (element o nazwie "hello")

to wydaje się dodatkowym kłopoty, ale to rzeczywiście działa całkiem dobrze. Ułatwia również obsługę internacjonalizacji i różnych rozmiarów ekranu. Deklarujesz tylko dodatkowe pliki zasobów dla różnych kodów krajów i układów, a Android wybiera dla Ciebie najlepsze dopasowanie.

Ten dokument o numerze internationalization here może lepiej wyjaśnić, dlaczego zdecydował się to zrobić w ten sposób.

Powiązane problemy