5

Androidボタンにプログラムでスタイルを追加/削除するにはどうすればよいですか?実行時にスタイリングを適用することは可能ですか?

私はこれらのように見える2つのボタンを持っています

     ---------- ----------
    | ボタンA| | ボタンB|
     ---------- ----------

私がやりたかったのは、ボタンがクリックされたとき(たとえば、ボタンB)、コードが実行され、ボタンBのスタイルが別のスタイル(つまり、強調表示された境界線)に変更され、次のようになります。

     ---------- ==========
    | ボタンA| || ボタンB||
     ---------- ==========

XMLでスタイリング(つまり、スタイルを作成する)を行う方法を知っています。知りたいのは、ランタイム/Javaコードを使用してスタイルを適用する方法だけです。

4

3 に答える 3

12

あなたの場合のためにいくつかのコードをやってみましょう...:)ビュー(この場合はボタン)にスタイルを動的に適用するには、レイアウトフォルダー(res / layout)で次のことを行う必要があります。

buttonstyle.xmlという名前を付けました

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true">
        <shape>
            <solid android:color="#449def"/>
            <stroke android:width="1dp" android:color="#2f6699"/>
            <corners android:radius="3dp"/>
            <padding android:left="10dp" android:top="10dp" android:right="10dp"
                     android:bottom="10dp"/>
        </shape>
    </item>

    <item>
        <shape>
            <gradient android:startColor="#449def" android:endColor="#2f6699" android:angle="270"/>
            <stroke android:width="1dp" android:color="#2f6699"/>
            <corners android:radius="4dp"/>
            <padding android:left="10dp" android:top="10dp" android:right="10dp"
                     android:bottom="10dp"/>
        </shape>
    </item>

</selector>

次に、ボタンにスタイルを適用し、アクティビティのonCreate()メソッドに次のコードを追加します。

Button transferBtn = new Button(this);
transferBtn.setText("Test Example");
transferBtn.setId(R.string.transferBtn);
transferBtn.setBackgroundResource(R.layout.buttonstyle);
于 2013-01-17T19:54:17.800 に答える
3

実行時に(コードから)xml定義のスタイルを適用することはできません。ボタンがクリック(押された)したときに背景とフォントスタイルを変更する場合は、通常のボタンまたはクリック状態に使用する背景を定義するセレクターを作成する必要があります。

セレクターが希望どおりでない場合は、ButtonクラスのbuttonのsetXXXメソッドを使用して、すべてのボタンプロパティを手動で目的の値に設定する必要があります。

PS古いボタンを、異なるスタイルのxmlから拡張された新しいボタンと交換できます。しかし、これは私が思うに良い方法ではありません...

于 2013-01-17T19:45:32.577 に答える
0

この別のスレッドで答えたように、一部の人々が提案するようにプログラムで背景を設定するか、サポートライブラリを使用している場合はプログラムでスタイルを設定することができます(ここで提案します)。

于 2016-09-16T10:00:50.683 に答える