0

ボタンの代わりに使用しているカスタム ドローアブルがあります。たとえばcamButton、ネイティブ カメラを開き、ユーザーが写真を撮れるようにします。

camButtonドローアブルを白または緑にすることができるように、リソースが提供されています。これはどのようにcamButton振る舞うべきかです:

1) デフォルトの無入力状態は白です。

2) 入力が提供されている状態は緑色です。つまり、ユーザーが写真を正常に撮影し、それを削除していない場合、drawable はこれを示すために緑色になります。

3) ボタンが白のときにボタンを押すと、ユーザーがボタンを離すまでボタンが緑に変わります。

4) 緑色のボタンを押しても何も起こりません。

以下は、selectorこれに似たものをテストするためのものです。ただし、このセレクターは、ボタンが押されたときにのみボタンの色を変更します。上記の #1 と #3 には対応していますが、#2 と #4 には対応していません。

cam_selector.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- green --> <item android:drawable="@drawable/cam_pressed" android:state_pressed="true"/> 
    <!-- green --> <item android:drawable="@drawable/cam_pressed" android:state_long_pressable="true"/> 
    <!-- white --> <item android:drawable="@drawable/cam_normal"/> 
</selector>

これは、私のメイン レイアウトでのセレクターの実装方法です。

<Button
    android:id="@+id/camButton"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:background="@drawable/cam_selector"/>

私のアプリでは、ブール値を使用して提供された入力があるかどうかをテストします。

camButton質問: コード内のブール値に@drawable/cam_pressed基づいて (または別の方法で)の状態を設定するにはどうすればよいですか?

不明な点がある場合、または追加情報が必要な場合はお知らせください。アドバイスをいただければ幸いです。ありがとう!

4

1 に答える 1

2
Button button = (Button) findViewById(R.id.camButton);      
if(camPressed){
    button.setBackground(getResources().getDrawable(R.drawable.cam_pressed))
 } else{
     //other stuff
 }
于 2014-12-07T00:38:28.033 に答える