Czy istnieje sposób programowego ustawienia textStyle
atrybutu TextView
? Wydaje się, że nie ma setTextStyle()
metody.
Żeby było jasne, nie mówię o stylach Widoku / Widżetu! Mówię o:
<TextView
android:id="@+id/my_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World"
android:textStyle="bold" />
Odpowiedzi:
setTypeface jest atrybutem textStyle.
Jak dodał Shankar V , aby zachować wcześniej ustawione atrybuty kroju pisma, możesz użyć:
źródło
textview.setTypeface(textview.getTypeface(), Typeface.DEFAULT_BOLD);
textview.getTypeface().getStyle()
jestandroid:textStyle
Załóżmy, że masz styl o nazwie RedHUGEText w twoich wartościach / styles.xml:
Po prostu utwórz TextView jak zwykle w pliku XML layout / your_layout.xml, powiedzmy:
W kodzie Java swojej aktywności robisz to:
To zadziałało dla mnie! I zastosował kolor, rozmiar, grawitację itp. Użyłem go na telefonach i tabletach z Android API Poziomami od 8 do 17 bez żadnych problemów. Pamiętaj, że od Androida 23 ta metoda jest przestarzała. Argument kontekstu został usunięty, więc ostatni wiersz musiałby być:
Pamiętaj ... jest to przydatne tylko wtedy, gdy styl tekstu naprawdę zależy od warunku logiki Java lub budujesz interfejs użytkownika „w locie” z kodem ... jeśli nie, lepiej po prostu robić:
Zawsze możesz mieć to na swój sposób!
źródło
<style>
znaczniku. Robi te typowe (rozmiar, kolor, styl), ale nie stosuje innych (w tym wypełnienia, tła, grawitacji itp.)Wyszukaj
setTextAppearance
lub teżsetTextTypeface
. Podobne pytanie dotyczy stackoverflow: jak zmienić styl TextView w czasie wykonywaniaźródło
Tak wiele sposobów na osiągnięcie tego zadania, niektóre są poniżej:
1.
2)
3)
4
lub jeśli chcesz przez xml
źródło
•
Kotlin Version
Aby zachować bieżącą czcionkę oprócz stylu tekstu:
źródło
To pytanie jest zadawane w wielu miejscach na wiele różnych sposobów. Początkowo odpowiedziałem na to tutaj, ale czuję, że jest to również istotne w tym wątku (odkąd skończyłem tutaj gdy szukałem odpowiedzi).
Nie ma jednego liniowego rozwiązania tego problemu, ale zadziałało to w moim przypadku użycia. Problem polega na tym, że konstruktor „Widok (kontekst, attrs, defStyle)” nie odnosi się do rzeczywistego stylu, chce atrybutu. Więc będziemy:
W „res / wartości / attrs.xml” zdefiniuj nowy atrybut:
W res / wartości / styles.xml „Mam zamiar stworzyć styl, którego chcę używać w moim niestandardowym TextView
W „res / wartości / themes.xml” lub „res / wartości / styles.xml” zmodyfikuj motyw swojej aplikacji / działania i dodaj następujący styl:
Wreszcie, w niestandardowym TextView możesz teraz użyć konstruktora z atrybutem, który otrzyma Twój styl
Warto zauważyć, że wielokrotnie używałem customTextView w różnych wariantach i różnych miejscach, ale w żadnym wypadku nie jest wymagane, aby nazwa widoku pasowała do stylu, atrybutu lub czegokolwiek. Ponadto ta technika powinna działać z dowolnym niestandardowym widokiem, a nie tylko z widokami tekstowymi.
źródło
To zadziałało dla mnie
lub
źródło
Rozwiązałem to za pomocą dwóch prostych metod.
Postępuj zgodnie z wyjaśnieniem.
Moja istniejąca deklaracja stylu:
Mój kod Java Androida:
Pozdrowienia.
źródło
Możesz spróbować tego
źródło
Ponieważ
setTextAppearance(resId)
jest dostępny tylko dla API 23 i wyższych, użyj:TextViewCompat.setTextAppearance(textViewGoesHere, resId)
Ta metoda jest implementowana wewnętrznie w następujący sposób:
źródło
Jak wspomniano tutaj , ta funkcja nie jest obecnie obsługiwana.
źródło