web-dev-qa-db-ja.com

textViewのスタイルをプログラムで設定するにはどうすればよいですか?

私はtextViewをプログラムで作成しています。このtextViewのスタイルを設定する方法はありますか?似たようなもの

style="@Android:style/TextAppearance.DeviceDefault.Small"

layout.xmlファイルがある場合に使用します。

30
lokoko

プログラムでビューのスタイルを設定することはできませんが、textView.setTextAppearance(context, Android.R.style.TextAppearance_Small);のようなことができるかもしれません。

51
Matt

現在、ビューのスタイルをプログラムで設定することはできません。

これを回避するには、スタイルが割り当てられたテンプレートレイアウトxmlファイルを作成します。たとえば、次のコンテンツのようにres/layout create tvtemplate.xmlを作成します。

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:text="This is a template"
        style="@Android:style/TextAppearance.DeviceDefault.Small" />

次に、これをインフレートして、新しいTextViewをインスタンス化します。

TextView myText = (TextView)getLayoutInflater().inflate(R.layout.tvtemplate, null);
29
Raghav Sood

実際、これはAPIレベル21以降で可能です。

TextViewには 4パラメーターコンストラクター があります。

TextView (Context context, 
          AttributeSet attrs, 
          int defStyleAttr, 
          int defStyleRes)

この場合、中央の2つのパラメーターは必要ありません。次のコードは、アクティビティでTextViewを直接作成し、そのスタイルリソースのみを定義します。

TextView myStyledTextView = new TextView(this, null, 0, R.style.my_style);
8
John Rattz

これを試して

textview.setTextAppearance(context, R.style.yourstyle);

これはうまくいかないかもしれませんこのようなtextviewでxmlを作成してみてください

textviewstyle.xml

<TextView xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        style="@Android:style/TextAppearance.DeviceDefault.Small" />

目的のスタイルを取得するには、textviewを含むxmlを膨張させます

TextView myText = (TextView)getLayoutInflater().inflate(R.layout.tvstyle, null);
5
Pragnani

互換バージョン(API 23の非推奨のため):

TextViewCompat.setTextAppearance(textView, Android.R.style.TextAppearance_DeviceDefault_Small);
4
nastasina

(コードで)実行時に生成されたビューの場合、コンストラクタにスタイルを渡すことができます: View(Context、AttributeSet、int)

他の場合は、外観を変更するためにバリオスのメソッドを呼び出す必要があります

1
outlying
@Deprecated
public void setTextAppearance(Context context, @StyleRes int resId)

このメソッドは、Android SKD 23。

安全なバージョンを使用できます:

if (Build.VERSION.SDK_INT < 23) {
    super.setTextAppearance(context, resId);
} else {
    super.setTextAppearance(resId);
}
0