0

そのため、大部分が XML で定義されている 1 つの画面があり、XML ファイルで ?attr/textAppearanceLarge を選択しました。

IDを検索するコードを配置し、テキストサイズTextViewを LogCat にダンプし、 to を使用setTextAppearanceしてテキストの外観を変更するandroid.R.attr.textAppearnaceSmallと、サイズは変更されません。ログには、33.0 textsize を使用していると書かれています

逆にいじっていたカスタム設定では、テキスト ラベルを作成したいと考えていました。テキストを大きくするようにプログラムで指定すると、setTextAppearance(android.R.attr.textAppearanceLarge)テキスト サイズが小さくなります (20 程度の範囲で)。

テキストサイズが台無しになっている理由について私が考えることができる唯一の考えは、1つはフィルペアレントを使用し、もう1つはコンテンツをラップすることです。それは本当にテキストサイズに影響を与えるでしょうか?

更新:おそらく、いくつかのコードがよりよく示すでしょう。カスタム設定ウィジェットを作成しています。設定タイトルのテキスト文字列を使用するテキスト ラベルと、タイム ピッカーが必要です。私が得ていないのは、なぜここの textAppearanceLarge がテキストサイズを変更しないのかということです。つまり、setTextAppearance の前と後のログは同じ値を返します。

@Override
protected View onCreateView(ViewGroup parent) {
    LinearLayout layout = new LinearLayout(getContext());
    LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.FILL_PARENT,
            LinearLayout.LayoutParams.FILL_PARENT);
    params1.gravity = Gravity.CENTER;
    params1.weight = 1.0f;

    TextView text = new TextView(getContext());
    text.setText(getTitle());
    Log.d(this.getClass().getName(),Float.toString(text.getTextSize()));
    text.setTextAppearance(getContext(),android.R.attr.textAppearanceLarge);
    Log.d(this.getClass().getName(),Float.toString(text.getTextSize()));
    text.setGravity(Gravity.CENTER);
    text.setLayoutParams(params1);

    TimePicker picker = new TimePicker(getContext());
    picker.setCurrentHour(m_hour);
    picker.setCurrentMinute(m_minute);
    LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);
    params2.gravity = Gravity.RIGHT;

    picker.setLayoutParams(params2);
    picker.setOnTimeChangedListener(this);
    picker.setLayoutParams(params2);

    layout.setOrientation(LinearLayout.HORIZONTAL);
    layout.addView(text);
    layout.addView(picker);
    layout.setId(android.R.id.widget_frame);

    return layout;
}
4

1 に答える 1

0

笑。私は何日も頭を悩ませ、この問題についてかなり長い間検索してきました。この質問を編集すると、アンドロイドの問題トラッカーで答えが見つかります。

http://code.google.com/p/android/issues/detail?id=1727

私はやるべきです:

text.setTextAppearance(getContext(),android.R.style.TextAppearance_Large);
于 2012-04-28T09:13:49.533 に答える