2013-07-30 17 views
6

ので、同様に、私はのImageButtonを作成しています:私は/クリックしたときにボタンフラッシュまたは変更色を持つ方法を実装したいと思いますのImageButtonのonClick変色

  <ImageButton 
       android:id="@+id/one" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.333" 
       android:adjustViewBounds="true" 
       android:background="@null" 
       android:contentDescription="@string/description_image_button_one" 
       android:scaleType="fitEnd" 
       android:src="@drawable/dialpad_1" /> 

はちょうどそれがクリックされていることを識別するために押され。私は、特定の色にstate_pressedのセレクタを使用して背景をdrawableとして参照できることを知っています。私はdrawableの各ボタンのために別々のXMLファイルを作ることを避けようとしています。これらの余分なXMLファイルをすべて作成せずにこれを行う最善の方法は何ですか?

+1

は、それが動作する任意の背景色を設定していません自然に.. –

+0

またはボタンの色を変更するをクリックします。 –

+0

正確に何かの背景色を設定しないという意味ですか?私は今@ nullを持っています。 – ono

答えて

10

ボタンの背景にカスタムの描画可能なセレクタを作成する必要があります。

このファイルはXMLフォルダに住んでおり、この(とき異なる選択された状態の各要素は、ボタンの背景を説明する)のようなものになります。

ファイルは、次のような名前になりますRES /描画可能/ my_custom_selector.xml

次に、あなたのImageViewの(または任意のビュー)にその背景を適用する
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:drawable="@drawable/blue_button_on" 
     android:state_focused="true" 
     android:state_pressed="true"/> 
    <item 
     android:drawable="@drawable/blue_button_on" 
     android:state_focused="false" 
     android:state_pressed="true"/> 
    <item 
     android:drawable="@drawable/blue_button_off" 
     android:state_focused="true" 
     android:state_pressed="false"/> 
    <item 
     android:drawable="@drawable/blue_button_off" 
     android:state_focused="false" 
     android:state_pressed="false"/> 
</selector> 

、単なる背景として設定が:その場合の

<ImageButton 
       android:id="@+id/one" 
       android:layout_width="0dip" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.333" 
       android:adjustViewBounds="true" 
       android:background="@drawable/my_custom_selector" 
       android:contentDescription="@string/description_image_button_one" 
       android:scaleType="fitEnd" 
       android:src="@drawable/dialpad_1" /> 
+0

入手しました。 12個のボタンがある場合、12個のXMLファイルを作成する必要がありますか? – ono

+0

いいえ、すべてのボタンで同じ背景を使用できます。すなわち、それぞれのボタンに同じ背景を適用するだけです(押されたときに同じ外観になります)。 button1.setBackground(my_drawable); button2.setBackground(my_drawable);等 – Booger

1

避けようとしているXMLファイルは、あなたが望むものを達成するための簡単な方法です。 もう1つの方法は、onClickListenerのコードを使用することです。私の意見では、これ以上の作業が必要な作業です。

+0

ボタンごとに異なるsrcがあるため、すべてのボタンのxml、正しい? – ono

+0

確かに、コードを使って押された状態と押し込まれていない状態で異なるテクスチャを指定する必要があります。これはさらに悪いことです。だからあなたはそのように行くべきだと思います。 –

+0

私はあなたに質問に答えませんでしたか? –

0

あなたはXMLファイルを使用する必要があります。そうでなければ何もしません.Androidは、押されたボタンのデフォルトの色を提供します。

関連する問題