Próbuję dodać trochę miejsca między wierszami do moich TextView, używając android:lineSpacingMultiplier
z dokumentacji :
Dodatkowe odstępy między wierszami tekstu jako mnożnik.
Musi być wartością zmiennoprzecinkową, na przykład „1.2”.
Ponieważ używam tego w kilku różnych TextViews, chciałbym dodać globalny wymiar / wartość do moich zasobów, ale nie wiem, którego znacznika użyć, jeśli w ogóle istnieje. Próbowałem wszystkich typów zasobów, które mają dla mnie sens, ale żaden z nich nie działa.
Chciałbym mieć coś takiego:
<resources>
<dimen name="text_line_spacing">1.4</dimen>
</resources>
Edycja: Jestem świadomy android:lineSpacingExtra
(który wymaga wymiaru z dołączoną jednostką), ale chciałbym użyć, android:lineSpacingMultiplier
jeśli to możliwe.
<item type="string" format="float" name="my_float">0.5</item>
i tego kodu, aby go pobrać:float my_float = Float.parseFloat (getResources ().getString (R.string.my_float));
<string>
tagu?Jak opisano w tym linku http://droidista.blogspot.in/2012/04/adding-float-value-to-your-resources.html
Zadeklaruj w dimen.xml
Odwołanie z xml
Odwołanie z Java
źródło
Wszystkie rozwiązania sugerują użycie predefiniowanej wartości zmiennoprzecinkowej za pomocą kodu.
Ale jeśli zastanawiasz się, jak odwoływać się do predefiniowanej wartości zmiennoprzecinkowej w formacie XML (na przykład układy), poniżej znajduje się przykład tego, co zrobiłem i działa idealnie:
Zdefiniuj wartości zasobów jako,
type="integer"
aleformat="float"
na przykład:A później użyj ich w swoim układzie, używając
@integer/name_of_resource
na przykład:źródło
<dimen>
Znalazłem też obejście, które wydaje się działać dobrze bez ostrzeżeń:
Następnie:
Ostrzeżenie : działa tylko wtedy, gdy używasz dimen z kodu Java, a nie z xml
źródło
type="fraction"
aby uniknąć błędów w kodzie JavaDodaj liczbę zmiennoprzecinkową do dimens.xml:
<item format="float" name="my_dimen" type="dimen">1.2</item>
Aby odwołać się z XML:
Aby odczytać tę wartość programowo, możesz użyć
ResourcesCompat.getFloat
z androidx.coreZależność stopniowa:
implementation("androidx.core:core:${version}")
Stosowanie:
źródło
Możemy go również użyć do wytyczenia układu ograniczenia.
Utwórz plik integer.xml i dodaj do
Użyj z pliku layout.xml
źródło
Użyłem stylu, aby rozwiązać ten problem. Oficjalny link jest tutaj .
Całkiem przydatne rzeczy. Tworzysz plik do przechowywania swoich stylów (np. „Styles.xml”) i definiujesz je w nim. Następnie odwołujesz się do stylów w swoim układzie (np. „Main.xml”).
Oto przykładowy styl, który robi to, co chcesz:
Powiedzmy, że chcesz zmienić prosty TextView za pomocą tego. W pliku układu wpisz:
Wypróbuj - jest to zasadniczo sposób, w jaki wszystkie wbudowane interfejsy użytkownika są wykonywane na Androidzie. Używając stylów, możesz zmodyfikować wszystkie inne aspekty swoich widoków.
źródło
Jeśli masz proste zmiennoprzecinkowe, których kontrolujesz zakres, możesz również mieć liczbę całkowitą w zasobach i podzielić przez liczbę miejsc dziesiętnych, których potrzebujesz prosto w kodzie.
Więc coś takiego
jest używany z 2 miejscami po przecinku
i to czyni go 3.56f
To nie jest najbardziej eleganckie rozwiązanie, ale dla prostych projektów jest wygodne.
źródło
Znalazłem rozwiązanie, które działa, ale powoduje
Warning
(WARN/Resources(268): Converting to float: TypedValue{t=0x3/d=0x4d "1.2" a=2 r=0x7f06000a}
) w LogCat.źródło
Chociaż w przeszłości korzystałem z akceptowanej odpowiedzi, wydaje się, że przy obecnych Narzędziach do kompilacji można:
Korzystam z głównych wersji Build Tools 29.
źródło