在我的应用程序中,我使用一个带有选择器状态的自定义按钮。未按和集中的状态工作得很好,尽管按下的状态不起作用。什么好主意吗?如果有意义的话,on - click监听器是在片段中实现的。
这是我的选择器代码:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/participants_pressed"
android:state_pressed="true" />
<item android:drawable="@drawable/participants_pressed"
android:state_focused="true" />
<item android:drawable="@drawable/participants_unpressed" />
</selector>
下面是我的java代码:
Button participantsSelector = new Button(getActivity());
ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(300,300);
participantsSelector.setBackgroundResource(R.drawable.selector_participants);
participantsSelector.setLayoutParams(lp);
participantsSelector.setClickable(true);
participantsSelector.setOnClickListener(this);
participantsGrid.addView(participantsSelector);
按钮只有当用户的手指在上面时才会被按下。如果你想要两种不同的状态,你可以使用ToggleButton。
为您的可绘制:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:state_pressed="true" /> //currently pressed turning the toggle on
<item android:state_pressed="true" /> //currently pressed turning the toggle off
<item android:state_checked="true" /> //not pressed default checked state
<item /> //default non-pressed non-checked
有了你的XML和按钮,我想知道…如果在侦听器中以编程方式切换状态会怎么样?
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(button.isSelected()) {
button.setSelected(false);
} else {
button.isSelected(true);
}
}
});