wake-up-neo.net

Wie stelle ich den Stil einer Textansicht programmgesteuert ein?

Ich erstelle programmgesteuert eine Textansicht. Gibt es eine Möglichkeit, den Stil dieser Textansicht festzulegen? Etwas Ähnliches

style="@Android:style/TextAppearance.DeviceDefault.Small"

was ich verwenden würde, wenn ich eine layout.xml-Datei hätte.

24
lokoko

Sie können den Stil einer Ansicht nicht programmgesteuert festlegen. Möglicherweise können Sie jedoch etwas wie textView.setTextAppearance(context, Android.R.style.TextAppearance_Small); ausführen.

44
Matthew

Es ist derzeit nicht möglich, den Stil einer Ansicht programmgesteuert festzulegen. 

Um dies zu umgehen, können Sie eine XML-Datei mit Vorlagenlayout mit dem zugewiesenen Stil erstellen, beispielsweise in res/layout create tvtemplate.xml mit folgendem Inhalt:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="This is a template"
        style="@Android:style/TextAppearance.DeviceDefault.Small" />

dann blasen Sie diese auf, um Ihre neue TextView zu instanziieren:

TextView myText = (TextView)getLayoutInflater().inflate(R.layout.tvtemplate, null);
26
Raghav Sood

Eigentlich ist dies ab API Level 21 möglich.

TextView hat einen 4 Parameter-Konstruktor :

TextView (Context context, 
          AttributeSet attrs, 
          int defStyleAttr, 
          int defStyleRes)

Die mittleren zwei Parameter sind in diesem Fall nicht erforderlich. Der folgende Code erstellt eine TextView direkt in einer Aktivität und definiert nur ihre Stilressource:

TextView myStyledTextView = new TextView(this, null, 0, R.style.my_style);
5
John Rattz

Kompatible Version (wegen Ablehnung in API 23):

TextViewCompat.setTextAppearance(textView, Android.R.style.TextAppearance_DeviceDefault_Small);
4
shmakova

Versuche dies

textview.setTextAppearance(context, R.style.yourstyle);

dies funktioniert möglicherweise nicht. Versuchen Sie, eine XML mit der Textansicht wie folgt zu erstellen

textviewstyle.xml

<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        style="@Android:style/TextAppearance.DeviceDefault.Small" />

Um den gewünschten Stil zu erhalten, blasen Sie die XML-Datei auf, die Textansicht enthält

TextView myText = (TextView)getLayoutInflater().inflate(R.layout.tvstyle, null);
4
Pragnani

Für Views, die zur Laufzeit (im Code) erstellt wurden, können Sie style an den Konstruktor übergeben: View (Context, AttributeSet, int)

Andernfalls müssen Sie verschiedene Methoden aufrufen, um das Erscheinungsbild zu ändern

1
outlying
@Deprecated
public void setTextAppearance(Context context, @StyleRes int resId)

diese Methode ist ab Android SKD 23 veraltet.

sie können die sichere Version verwenden:

if (Build.VERSION.SDK_INT < 23) {
    super.setTextAppearance(context, resId);
} else {
    super.setTextAppearance(resId);
}
0