1

私の質問は、動的に追加した後にtextViewスタイルを設定する方法です。

コードは次のとおりです。

LinearLayout layout = (LinearLayout)findViewById(R.id.linarLay);
TextView textView = new TextView(this);
textView.setText("TEST1");        
layout.addView(textView);

追加されたテキストビューを見ることができますが、今すぐスタイルを設定する必要があります。これまでのところ、これを試しました。

textView.setTextAppearance(getApplicationContext(),R.style.textStyle);

layout.addView(textView);の後にこのコードを試しました。そしてそれがまったく同じになる前に、物事を変えることはありません。

任意のアイデア/解決策をいただければ幸いです...ありがとう

4

3 に答える 3

4

に追加した後、同じTextViewオブジェクトを使用してスタイルを設定してもLayout、レイアウトの一部ではないため、スタイルは変更されません。IDを使用してレイアウトから追加を取得するView必要があり、スタイルを変更すると、のビューに直接影響しますLayout

これを試してください:(私はテストしていませんが*動作するはずです)

LinearLayout layout = (LinearLayout)findViewById(R.id.linarLay);
TextView textView = new TextView(this);
textView.setText("TEST1");
textView.setId(999);      // give some id  
layout.addView(textView);

TextView tv=(TextView)findViewById(999);
tv.setTextAppearance(getApplicationContext(),R.style.textStyle);
于 2012-09-19T13:19:15.030 に答える
2

私も同様の問題を抱えていました。ボタンでも同じことをしたかった。プログラムですべてのプロパティを設定できます。

次のような一連のメソッドを使用してクラスを作成できます。

private void setButtonStyle(Button b, String text)
{
    LayoutParams param = new LinearLayout.LayoutParams(
            LayoutParams.MATCH_PARENT,
            LayoutParams.MATCH_PARENT, 1.0f);

    b.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.blue_button));
    b.setGravity(Gravity.CENTER);
    b.setText(text);
    b.setLayoutParams(param);
    b.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);
    b.setTypeface(null, Typeface.BOLD);
    b.setShadowLayer(2, 1, 1, R.color.button_shadow_colour);
    b.setTextColor(context.getResources().getColor(R.color.button_text_colour));
}

ご覧のとおり、必要なものをすべて設定することができます。例として、param変数のコンストラクターにはlayout_width、layout_height、weightの3つの引数があります。したがって、TextViewでも同じことができます。

于 2012-09-19T12:48:30.687 に答える
2

API 23以降非推奨: textView.setTextAppearance(getContext()、R.style.Headline);

したがって、次を選択します。

 textView.setTextAppearance(R.style.Headline); 
于 2017-06-03T11:43:05.240 に答える