1. ホーム
  2. android

[解決済み] ビューにプログラム的にstyle属性を設定する方法

2022-10-11 23:43:35

質問

以下のコードでXMLからビューを取得しています。

Button view = (Button) LayoutInflater.from(this).inflate(R.layout.section_button, null);

私はボタンのために"style"を設定したいと思いますどのように私はJavaでそれを行うことができますので、私は使用する各ボタンのためにいくつかのスタイルを使用したい。

どのように解決するには?

一般に、プログラムでスタイルを変更することはできません。XMLレイアウトの画面、レイアウトの一部、または個々のボタンの外観を設定するには、次のようにします。 テーマやスタイル . しかし、テーマは可能です。 をプログラム的に適用することができます。 .

のようなものもあります。 StateListDrawable の各状態で異なる drawable を定義することができます。 Button がフォーカスされているかどうか、選択されているかどうか、押されているかどうか、無効になっているかどうか、などです。

例えば、ボタンが押されたときに色を変えるようにするには、次のような XML ファイルを定義します。 res/drawable/my_button.xml ディレクトリをこのように定義します。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item
    android:state_pressed="true"
    android:drawable="@drawable/btn_pressed" />
  <item
    android:state_pressed="false"
    android:drawable="@drawable/btn_normal" />
</selector>

このセレクタを Button に適用することができます。 android:background="@drawable/my_button" .