TextView - настройка размера текста программно не работает

Я использую Eclipse Indigo, тестируя 2 эмулятора (2.2 и 3.0).

приведенный ниже код показывает, что я тестирую сейчас, однако установка размера текста ничего не показывает на экране при попытке запустить эмулятор. (если я прокомментирую размер текста, текст отображается красным цветом). Я думал, что каким-то образом затмение не перестраивает код, но я добавил строку кода, чтобы добавить синий фон, и это сработало. Я попытался установить размер текста после того, как текст был по-прежнему безуспешным. код ниже. Спасибо за вашу помощь! (отказ от ответственности) - я стараюсь держаться подальше от xml. Будучи тем, что я уже знаю java, я не хочу зависеть от этого.

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);
  }
}

Ответ 1

Размер текста 2 будет практически невидим. Попробуйте по крайней мере 14. BTW, использование xml имеет много преимуществ и облегчит вам жизнь, когда вам нужно сделать что-нибудь более сложное, чем "Hello World".

Ответ 2

метод TextView.setTextSize(int unit , float size); принимает два параметра.

Попробуйте это:

text.setTextSize(TypedValue.COMPLEX_UNIT_SP,14);

см. это и это.

Ответ 3

Это решило проблему для меня. У меня одинаковый размер шрифта на всех устройствах.

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

Ответ 4

В настоящее время метод setTextSize(float size) будет работать хорошо, поэтому нам не нужно использовать другой метод для изменения размера текста

android.widget.TextView.java исходный код

/**
 * 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);
}

Пример использования

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

Ответ 5

Подробнее о настройке размера текста в коде см. эту ссылку. В основном это говорит:

public void setTextSize (int unit, float size)

Поскольку: Уровень API 1 Установите размер текста по умолчанию для данного устройства и стоимость. См. TypedValue для возможных единиц измерения. Связанный XML Атрибуты

Параметры android: textSize

единица Требуемая единица измерения.
size Желаемый размер в данных единицах.

Ответ 6

В моем случае Используется этот Метод:

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

Здесь Set TextView TextSize Programatically:

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

Продолжайте пользоваться:)