背景色を赤、緑、青に個別に設定したボタンがいくつかあります。ボタンを押すとクリックイベントが発生しますが、ボタンが押されたことをユーザーが知るためのGUIの変更はありません。Android ボタンのデフォルトの背景の灰色がかった色がオレンジ色に変わり、押した状態を離すと灰色がかった色に戻ります。色付きのボタンにこれを実装する方法は?
23238 次
3 に答える
26
これは、XMLStateListDrawable
で表されるを介して実装されます。参照: http://developer.android.com/guide/topics/resources/drawable-resource.html#StateListselector
以下は、デフォルトで白、押されると黒になるドローアブルの例です:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@android:color/black" /> <!-- pressed -->
<item android:drawable="@android:color/white" /> <!-- default -->
</selector>
于 2013-01-02T05:09:37.973 に答える
8
K-Ballo が述べたように、StateListDrawable を使用して、状態に応じてさまざまなグラフィックスを持つビューを実装できます。あなたの場合、ボタンは、ボタンが押された状態とボタンが押されていない状態の2つの状態のビューです。
drawable フォルダーに buttonselector.xml ファイルを作成する必要があります。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_not_pressed" android:state_pressed="false" android:state_selected="false"/>
<item android:drawable="@drawable/button_pressed" android:state_pressed="true"/>
</selector>
ボタンの状態用に 2 つの個別の xml ファイルを作成する
button_not_pressed.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#FFFFFF"
android:centerColor="#FFFFFF"
android:endColor="#FFFFFF"
android:angle="270" />
</shape>
button_pressed.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#FF0000"
android:centerColor="#FF0000"
android:endColor="#FF0000"
android:angle="270" />
</shape>
状態に応じてボタンの背景色を表す 2 つの html カラーコード #FF0000 と #FFFFFF に気付くでしょう。
カスタムボタンのスタイルを設定する main.xml で
<Button
android:id="@+id/customButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/buttonselector"
android:text="test"
android:textColor="#000000" />
アクティビティ クラスに次の 2 行を追加します。
Button customButton = (Button) findViewById(R.id.customButton);
customButton.setBackground(getResources().getDrawable(R.drawable.buttonselector));
それが役に立てば幸い
于 2013-01-02T06:45:19.390 に答える
2
この方法を試してください:
<?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="#1E669B" />
<stroke
android:width="2dp"
android:color="#1B5E91" />
<corners
android:radius="6dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#1E669B"
android:endColor="#1E669B"
android:angle="270" />
<stroke
android:width="4dp"
android:color="#1B5E91" />
<corners
android:radius="7dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
</selector>
于 2013-01-02T05:24:05.273 に答える