我的片段中有一个按钮。应该变成R.drawable.role_button_pressed然后我按它或如果我的按钮已被按下它应该变成原始R.drawable.role_button然后我按它。但是我按下我的按钮需要按两次才能改变状态。
我的xml看起来像这样:
<Button
android:id="@+id/role"
android:layout_width="40dp"
android:layout_height="40dp"
android:gravity="center"
android:layout_marginTop="@dimen/margin_role_buttons_top"
android:layout_marginRight="@dimen/margin_role_buttons_right"
android:layout_marginBottom="@dimen/margin_role_button_bot"
android:text="@string/jungle"
android:textColor="@android:color/black"
android:layout_below="@id/divider4"
android:layout_toLeftOf="@id/role_mid_lookingfor"
android:background="@drawable/role_button" />
并点击方法
boolean isPressed = true;
Button rolebutton = (Button) v.findViewById(R.id.role);
rolebutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!isPressed){
rolebutton.setBackgroundResource(R.drawable.role_button_pressed);
isPressed=true;
}else if(isPressed==true){
rolebutton.setBackgroundResource(R.drawable.role_button);
isPressed=false;
}
}
});
答案 0 :(得分:2)
首先你有错误的默认布尔值。
我假设起始资源是R.drawable.role_button
。
将isPressed
更改为false并将其放入clickListener,因为它没有按下右键?
我建议你在if else
中使用更好的快捷方式rolebutton.setOnClickListener(new View.OnClickListener() {
boolean isPressed = false;
public void onClick(View v) {
rolebutton.setBackgroundResource(isPressed ? R.drawable.role_button : R.drawable.role_button_pressed));
isPressed = !isPressed;
}
}