首先,我将值j,u声明为整数,因为text.getCurrentTextColor()和text.setTextColor()只取整数。
然后我创建了一个OnClickListener()
方法,这样当我点击它时,它会在方法中运行代码
之后我创建了两个if
条件,这些条件将持续将文本颜色切换为颜色ID" j"或颜色ID" u"。
我在我的设备上运行程序,当我点击它时,文本消失了,再也没有回来了。
我是编程新手,我无法在任何帖子中找到问题的答案。
我是否正确理解了OnClickListener()
事件?
并且android:clickable="true"
是否必要?
<TextView
android:id="@+id/yourlabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="LabelText"
android:textSize="20dp"
android:clickable="true" />
爪哇
final int j=100000; //Color id number
final int u=690856; //Color id number
text=(TextView)findViewById(R.id.yourlabel);
text.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
if(j==text.getCurrentTextColor())
{
text.setTextColor(u);
}
else
{
text.setTextColor(j);
}
}
}
);
答案 0 :(得分:1)
您正确理解了onClickListener而不是,在这种情况下您不必使用android:clickable="true"
。
您遇到的问题是getCurrentTextColor()
返回的值超出您的预期。详细答案可以在这里找到:
getCurrentTextColor from a TextView returns a weird color
要修复代码,您应该在colors.xml中声明颜色,如下所示:
<color name="yourFirstColor">#0097A7</color>
<color name="yourSecondColor">#536DFE</color>
在您的活动中,您可以通过以下方式获取颜色:
final int j = ContextCompat.getColor(getApplicationContext(), R.color.yourFirstColor);
final int u = ContextCompat.getColor(getApplicationContext(), R.color.yourSecondColor);
答案 1 :(得分:0)
使用处理程序进行更改。 尝试这样的事情......
Handle handler;
然后在你的onCreate上初始化它
handler = new Handler();
对于灵活的解决方案,我正在创建一个方法
private void changeTextColor(TextView tv, int color){
handler.post(new Runnable(){
@Override
private void run(){
text.setTextColor(color);
}
});
}
这应该有用......