按钮工作在第二次单击android

时间:2016-11-11 14:09:32

标签: java android xml

我的片段中有一个按钮。应该变成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;
            }
        }
    });

1 个答案:

答案 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;
}
}