我有一个按钮,当我按下它时,我想要它按下它(按下Froyo上的绿色)。
任何帮助?
mycodes_Button = (Button) findViewById(R.id.mycodes);
...
if (saved_Button.isPressed())
{
saved_Button.setFocusable(true);
}
这样的东西?
答案 0 :(得分:42)
我遇到了这个带有自定义背景的按钮的问题,最后使用了selected state。所有观点都可以使用该状态。
要使用此功能,您必须将自定义按钮背景定义为state list:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:state_focused="false"
android:state_pressed="false"><bitmap ... /></item>
<item android:state_selected="true"><bitmap ... /></item>
<item android:state_focused="true"><bitmap ... /></item>
<item android:state_pressed="true"><bitmap ... /></item>
</selector>
然后使用该背景,假设它位于布局文件中的/res/drawable/button_bg.xml
,您使用:
...
<Button android:background="@drawable/button_bg" ... />
...
在您的代码中,您可以切换到onClick侦听器中的(取消)选定状态:
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.setSelected(true);
// normal click action here
}
});
activated state更符合预期含义,但仅适用于Android 3.x及更高版本。
答案 1 :(得分:35)
使用以下代码。这很有用。
mycodes_Button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
mycodes_Button.setPressed(true);
return true;
}
});
答案 2 :(得分:4)
ToggleButton会满足您的需求吗?
根据你的评论判断你似乎并不知道Touch Mode。在这种模式中,这是大多数事情的默认模式,没有焦点(这是你想要实现的目标) )并且没有选定的项目。
你可以尝试以编程方式退出触摸模式,但我不推荐它。经过一段时间的习惯后,触摸模式将为用户提供更好的体验。