关山初度尘未洗,策马扬鞭再奋蹄!这篇文章主要讲述Android系统。在按钮创建的操作完成之前,如何将按钮显示为PRESSED?相关的知识,希望能为你提供帮助。
我有button_focused
,button_pressed
和button_normal
图像。按下按钮时,将显示button_pressed
图像,并开始与按钮按下相关的操作。
当我退出按下按钮时,操作继续,但按钮返回到正在显示的button_normal
图像。
如何在整个操作过程中将显示的按钮图像设置为button_pressed
然后重置为button_normal
图像?
感谢您的时间
答案我使用了类似的功能
void setHighlighted(boolean highlight) {
button.setBackgroundResource( highlight
? R.drawable.bbg_pressed
: R.drawable.button_background);
}
其中button_background是
button_backgroung.xml
中定义的选择器:<
?xml version="1.0" encoding="utf-8"?>
<
selector xmlns:android="http://schemas.android.com/apk/res/android" >
<
item android:state_pressed="true" android:drawable="@drawable/bbg_pressed">
<
/item>
<
item android:state_focused="true" android:drawable="@drawable/bbg_selected">
<
/item>
<
item android:drawable="@drawable/bbg_normal">
<
/item>
<
/selector>
也就是说,此代码不会干扰Android框架使用的按下状态; 相反,它会改变背景,以便按下按钮。
另一答案如果你只需要一个两个状态按钮,那就更清楚了一点:
你不需要自己的
button.xml
。你可以使用Android的常规。如果您点击按钮,
button.setPressed(true)
将无效,因为Android会在您松开按钮后重置它。尝试先设置另一个按钮setPressed
状态,看看效果。这意味着,要在同一个按钮上使用它,必须将其设置为延迟。这是一个有效的例子。当然,所提到的方法(通过long id 18 ..)也可以改变背景。
private final Handler mHandler = new Handler();
rootView.findViewById(R.id.yourButton).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
boolean pressed = false;
if (v.getTag() instanceof Boolean)
pressed = (boolean) v.getTag();
final boolean newPressed = !pressed;
// setTag to store state
v.setTag(newPressed);
final View vRun = v;
Runnable run = new Runnable() {
@Override
public void run() {
vRun.setPressed(newPressed);
}
};
mHandler.post(run);
// mHandler.postDelayed(run, 5);
}
});
另一答案如果在其onClick方法中手动更改按钮中的图像,则当操作完成时,可以将该按钮的正常图像设置回来。如果操作非常快,那么更改将无法正确显示 - 它也可能需要延迟代码。
另一答案使用
(buttonName).setPressed(true)
【Android系统。在按钮创建的操作完成之前,如何将按钮显示为PRESSED()】并确保您为drawable保留了相应的xml文件,该文件定义了哪些drawable用于压缩,聚焦等状态:
另一答案我用了
NAME_OF_BUTTON.setImageResource(0xvalueofbutton_pressed image listed in R.java);
然后当动作终止时,我复制了代码并插入了整数值
button_normal
。之前我做的不同,我找不到我的代码的备份或硬拷贝。
再次感谢您的回复。
另一答案只需加上我的2美分作为另一种选择。而不是button.setPressed,一旦用户松开按钮,它将从选择器中丢失状态,您可以使用setSelected(true)。完成操作后,请确保使用setSelected(false)返回。
btn.setOnClickListener( view ->
{
view.setSelected(true);
});
并添加drawable选择器作为按钮的背景:
<
item android:drawable="@drawable/btn_selected" android:state_selected="true">
<
/item>
推荐阅读
- 将本地db(Sqlite)与服务器db android同步
- Glassfish Android
- RadioButton Intent活动 - android
- android.widget.RadioGroup无法强制转换为android.widget.RadioButton
- Android(onResume更新单选按钮)
- 添加值,更改单击单选按钮android
- 在其线性布局垂直父Android中将以编程方式创建的单选按钮居中
- 如何将RadioGroup元素的ID转换为Android studio中的字符串()
- 一般故障建设bootstrapper