私はtextViewをプログラムで作成しています。このtextViewのスタイルを設定する方法はありますか?似たようなもの
style="@Android:style/TextAppearance.DeviceDefault.Small"
layout.xmlファイルがある場合に使用します。
プログラムでビューのスタイルを設定することはできませんが、textView.setTextAppearance(context, Android.R.style.TextAppearance_Small);
のようなことができるかもしれません。
現在、ビューのスタイルをプログラムで設定することはできません。
これを回避するには、スタイルが割り当てられたテンプレートレイアウト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);
実際、これは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);
これを試して
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);
互換バージョン(API 23の非推奨のため):
TextViewCompat.setTextAppearance(textView, Android.R.style.TextAppearance_DeviceDefault_Small);
(コードで)実行時に生成されたビューの場合、コンストラクタにスタイルを渡すことができます: View(Context、AttributeSet、int)
他の場合は、外観を変更するためにバリオスのメソッドを呼び出す必要があります
@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);
}