我使用的是自定义绘图,而不是按钮。例如,camButton
打开本机相机,以便用户可以拍照。
camButton
提供了资源,因此drawable可以是白色或绿色。这就是camButton
的行为方式:
1)默认的无输入状态为白色。
2)提供输入的状态为绿色。 即如果用户已成功拍摄照片而未将其删除,则绘图为绿色表示此情况。
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
?
如果我不清楚,或者您需要其他信息,请告诉我。任何建议表示赞赏。谢谢!
答案 0 :(得分:2)
Button button = (Button) findViewById(R.id.camButton);
if(camPressed){
button.setBackground(getResources().getDrawable(R.drawable.cam_pressed))
} else{
//other stuff
}