そのため、大部分が 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;
}