185 Stimmen

TextView - das programmatische Einstellen der Textgröße scheint nicht zu funktionieren

Ich verwende Eclipse Indigo und teste auf 2 Emulatoren (2.2 und 3.0).

der Code unten zeigt, was ich jetzt teste, aber die Einstellung der Textgröße zeigt nichts auf dem Bildschirm, wenn ich versuche, den Emulator auszuführen (wenn ich die Textgröße auskommentiere, wird der Text mit einer roten Farbe angezeigt). Ich dachte, dass Eclipse den Code irgendwie nicht neu aufbaut, aber ich habe die Codezeile hinzugefügt, um den blauen Hintergrund hinzuzufügen, und das hat funktioniert. Ich habe versucht, die Textgröße nach der Einstellung des Textes mit noch keinen Erfolg. der Code ist unten. danke für Ihre Hilfe! (Haftungsausschluss) - Ich versuche, von Xml fernzubleiben. Da ich bereits Java kenne, möchte ich nicht darauf angewiesen sein.

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;

public class TestAndroidvs2Activity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TextView text = new TextView(this);
    text.setTextColor(Color.RED);
    text.setTextSize(2);    
    text.setBackgroundColor(Color.BLUE);
    text.setText("Hello Android");

    setContentView(text);
  }
}

628voto

Houcine Punkte 23601

Die Methode TextView.setTextSize(int unit , float size); benötigt zwei Parameter.

Versuchen Sie dies:

text.setTextSize(TypedValue.COMPLEX_UNIT_SP,14);

siehe este y este .

UPDATE: Jetzt ist die setTextSize(float size) wird die Textgröße festgelegt automatisch in " scaled pixel "Es ist nicht notwendig, die COMPLEX_UNIT_SP manuell zu erwähnen. Beziehen Sie sich auf die Dokumentation .

92voto

Vikas Punkte 4141

Damit ist das Problem für mich gelöst. Ich habe eine einheitliche Schriftgröße auf allen Geräten.

 textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,getResources().getDimension(R.dimen.font));

33voto

Linh Punkte 49889

Derzeit, setTextSize(float size) Methode wird gut funktionieren also haben wir keine andere Methode anwenden müssen zum Ändern der Textgröße

Android.widget.TextView.java Quellcode

/**
 * Set the default text size to the given value, interpreted as "scaled
 * pixel" units.  This size is adjusted based on the current density and
 * user font size preference.
 *
 * <p>Note: if this TextView has the auto-size feature enabled than this function is no-op.
 *
 * @param size The scaled pixel size.
 *
 * @attr ref android.R.styleable#TextView_textSize
 */
@android.view.RemotableViewMethod
public void setTextSize(float size) {
    setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
}

Beispiel mit

textView.setTextSize(20); // set your text size = 20sp

21voto

Nikolay Elenkov Punkte 52201

Die Textgröße 2 wird praktisch unsichtbar sein. Versuchen Sie es zumindest mit 14. Übrigens hat die Verwendung von Xml viele Vorteile und wird Ihnen das Leben leichter machen, wenn Sie einmal etwas Komplexeres als "Hello World" machen müssen.

12voto

Dhruv Raval Punkte 4786

In meinem Fall verwendet diese Methode :

public static float pxFromDp(float dp, Context mContext) {
    return dp * mContext.getResources().getDisplayMetrics().density;
}

Hier einstellen TextView's TextSize programmatisch :

textView.setTextSize(pxFromDp(18, YourActivity.this));

Viel Spaß weiterhin:)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X