我正在开发android。
我正在创建一个登录按钮。我希望每当我按下登录按钮时,应该更改该按钮的文本颜色。
按下此按钮后,应执行登录功能。
为此我编码如下: -
button_login.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
// TODO Auto-generated method stub
int action = arg1.getAction();
if(action == MotionEvent.ACTION_DOWN) {
button_login.setTextColor(Color.parseColor("#163D74"));
return true;
} else if (action == MotionEvent.ACTION_UP) {
button_login.setTextColor(Color.parseColor("#FFFFFF"));
return true;
}
return false;
}
});
button_login.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v)
{
// checking the functionality of login
}
});
但只有onTouchListener正在运行。登录功能无效。
请告诉我我做了什么错误。以及如何实现这两个功能。意味着我如何更改按钮文本的颜色以及如何执行登录功能。
提前谢谢。
答案 0 :(得分:3)
您应该在操作已启动时声明您的登录功能。
button_login.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
// TODO Auto-generated method stub
int action = arg1.getAction();
if(action == MotionEvent.ACTION_DOWN) {
button_login.setTextColor(Color.parseColor("#163D74"));
return true;
} else if (action == MotionEvent.ACTION_UP) {
// check logine functionality.
button_login.setTextColor(Color.parseColor("#FFFFFF"));
return true;
}
return false;
}
});
它使用相同的逻辑做同样的事情。
答案 1 :(得分:1)
答案 2 :(得分:1)
我认为您要做的是在按下时更改按钮的UI状态。为此,您不必在触摸时实现...只需编写一个xml并将其放在按钮的src标记上。
一个。在colors.xml上创建一个新标签。你可以添加颜色作为drawables ....你将在第二步中使用它。
在colors.xml中写下这样的东西
<drawable name="red">#0000ff</drawable>
B中。在drawables文件夹中创建一个新的xml,按名称命名
在xml中写这个,在这里你可以用drawable替换drawables,你可以在步骤A的帮助下创建。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/android_pressed"
android:state_pressed="true" />
<item android:drawable="@drawable/android_focused"
android:state_focused="true" />
<item android:drawable="@drawable/android_normal" />
</selector>
此代码是从here复制的。请参阅Custom Button
部分。
℃。将您在步骤B中创建的XML添加为按钮的src属性值,您已经替换了我理解您的onTouch正在做的...