2012-09-02 8 views
5

Statt für jede Textview dieser folgende Zeile verwenden:Kann ich Variablen in XML für Android verwenden?

android:textSize="40sp" 

Bin ich in der Lage 40SP mit einer Variablen zu ersetzen?

Als eine Nebenfrage wurde mir empfohlen, SP-Einheiten zu verwenden, wie es nach benutzerdefinierten Einstellungen geht. Ist das eine bewährte Methode?

Antwort

5

Kann ich 40sp durch eine Variable ersetzen?

können Sie entweder a dimension resource (beispielsweise android:textSize="@dimen/someSize") oder einen Stil verwenden, das dies tut (pro AlexN Antwort) oder die Größe zur Laufzeit über setTextSize() eingestellt.

Ich wurde empfohlen, SP-Einheiten zu verwenden, wie es nach benutzerdefinierten Einstellungen geht. Ist das eine bewährte Methode?

Bei neueren Android-Versionen kann der Benutzer die Basisschriftgröße über die Anwendung "Einstellungen" ändern. Wenn Sie sp für Einheiten verwenden, werden Ihre Schriftgrößen zusammen mit der Basisschriftgröße skaliert. Wenn Sie andere Einheiten verwenden (z. B. dp), bleibt Ihre Schriftgröße unabhängig davon, was der Benutzer in den Einstellungen hat, gleich. Es ist unmöglich zu sagen, ob eine gegebene Verwendung von sp eine "Best Practice" ist oder nicht - ich bin mir sicher, dass es Fälle gibt, in denen das Ändern der Schriftgröße eine schlechte Sache wäre. Standardmäßig ist sp wahrscheinlich der richtige Ausgangspunkt.

2

Wie ich weiß, ist die Verwendung von SP eine wirklich gute Übung für die Textgröße. Und nach Ihrer ersten Frage - ich denke, wir können Variable nicht verwenden, aber es gibt einen besseren Weg. Check it out - http://developer.android.com/guide/topics/ui/themes.html

Also, wenn Sie einen Stil definieren werden, können Sie Ihre Ansichten in XML wie <TextView android:id = "@+id/myId" style = "@style/myStyle"/> Und dieser Stil alle Parameter incapsulate erklären können Sie Ihre Textviews auf diesem Bildschirm festlegen möchten.

+0

Vielen Dank. Ich wusste nicht einmal über Stile. – tomofv

1

Nein, es ist nicht möglich, Code-basierte Variablen in XML-Dateien zu verwenden. Sie können jedoch Stile dafür verwenden.

Beispiel:

<style name="MyTvStyle"> 
    <item name="android:textSize">40sp</item> 
</style> 

Dann bewerben Sie es wie folgt aus:

<TextView style="@style/MyTvStyle" ... /> 

Ein Code basierten Ansatz möglich ist. Wenn für die TextViews das Attribut android:id definiert ist, können Sie sie im Code mit der Methode findViewById abrufen.

Beispiel:

int[] id_array = { 
    R.id.textview1, R.id.textview2, R.id.textview3 //Put all the id's of your textviews here 
} 

for(int i : id_array) { //Loop trough all the id's and retrieve the Textview associated with it. 
    TextView textview = (TextView)findViewById(i); 
    tv.setTextSize(TypedValue.COMPLEX_UNIT_SP,40); //Set the text size to 40sp 
} 

Und ja, es ist immer besser, sp anstelle der normalen Pixelwerte zu verwenden. Seit sp wird mit Gerätegröße und Benutzereinstellungen skalieren.

Verwandte Themen