ボタンの代わりに使用しているカスタム ドローアブルがあります。たとえば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
基づいて (または別の方法で)の状態を設定するにはどうすればよいですか?
不明な点がある場合、または追加情報が必要な場合はお知らせください。アドバイスをいただければ幸いです。ありがとう!