1. ホーム
  2. アンドロイド

[解決済み】Android:プログラムによるビュースタイルの設定

2022-04-02 09:38:20

質問

以下はXMLです。

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/LightStyle"
    android:layout_width="fill_parent"
    android:layout_height="55dip"
    android:clickable="true"
    android:orientation="horizontal" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" />

</RelativeLayout>

設定方法 style 属性をプログラムで作成することはできますか?

どのように解決するのですか?

技術的には、とにかくカスタムビューで、プログラム的にスタイルを適用することができます。

private MyRelativeLayout extends RelativeLayout {
  public MyRelativeLayout(Context context) {
     super(context, null, R.style.LightStyle);
  }
}

引数1つのコンストラクタは、プログラムでビューをインスタンス化するときに使用されるものです。

そこで、このコンストラクタをstyleパラメータを受け取るsuperにチェーンします。

RelativeLayout someLayout = new MyRelativeLayout(new ContextThemeWrapper(this,R.style.RadioButton));


あるいは@Doriさんのご指摘のようにシンプルに。

RelativeLayout someLayout = new RelativeLayout(new ContextThemeWrapper(activity,R.style.LightStyle));


今度はKotlinで。

class MyRelativeLayout @JvmOverloads constructor(
    context: Context, 
    attributeSet: AttributeSet? = null, 
    defStyleAttr: Int = R.style.LightStyle,
) : RelativeLayout(context, attributeSet, defStyleAttr)

または

 val rl = RelativeLayout(ContextThemeWrapper(activity, R.style.LightStyle))