本周我才刚刚开始学习XML和Java代码,感谢Udacity的课程......我几乎已经过了一半,但我觉得自己制作了自己的无用应用程序..
所以我在红色背景上有一些黑色文字。
当我单击文本时,我告诉Java将文本更改为白色,将背景更改为蓝色,确实如此。
当我再次点击文字时,我想让它回到黑色和红色,但事实并非如此。
我知道为什么会这样,但我不知道如何解决这个问题。
之所以会发生这种情况,是因为我的文字有onClick
来更改颜色并显示到屏幕。很自然地,每次点击都会调用相同的onClick
。
每次点击时,我该如何让它在两个颜色阶段之间不断交替?
我的XML是:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#c04"
android:orientation="vertical">
<TextView
android:id="@+id/textDisplay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:background="#c04"
android:fontFamily="sans-serif-smallcaps"
android:gravity="center"
android:onClick="Hey"
android:padding="30dp"
android:text="Hey!"
android:textAllCaps="true"
android:textColor="#000"
android:textSize="150sp"
android:textStyle="bold" />
</LinearLayout>
Java代码是
public void displaying(String message) {
TextView whatever = (TextView) findViewById(R.id.textDisplay);
whatever.setText(message);
whatever.setTextColor(Color.rgb(255, 255, 255));
whatever.setBackgroundColor(Color.rgb(82, 218, 199));
}
public void Hey(View v) {
displaying("Ho!");
}
我做了一些挖掘,发现我可以使用“onClickListener”?但无论我做什么,我都无法让它发挥作用。也许我无法正确理解语法。 还有另一种方法......可能更简单吗?这似乎是我头脑中相当容易的任务,但这个真的让我难过。
答案 0 :(得分:0)
执行以下操作:
public void Hey(View v) {
TextView whatever = (TextView) findViewById(R.id.textDisplay);
if(whatever.getText().toString().equals("Hey!")){
whatever.setText("Ho!");
whatever.setTextColor(Color.rgb(255, 255, 255));
whatever.setBackgroundColor(Color.rgb(82, 218, 199));
} else if (whatever.getText().toString().equals("Ho!"){
whatever.setText("Hey!");
whatever.setTextColor(Color.rgb(0, 0, 0));
whatever.setBackgroundColor(Color.rgb(/*red RGB*/));
}
}
您根据TextView的文本决定使用的文本和背景颜色。
答案 1 :(得分:0)
您可以将显示的状态保持为布尔值。类似的东西(未经测试):
boolean stateOfMyTextView = true;
public void displaying(String message) {
TextView whatever = (TextView) findViewById(R.id.textDisplay);
whatever.setText(message);
if (stateOfMyTextView == true) {
// First color
whatever.setTextColor(Color.rgb(255, 255, 255));
whatever.setBackgroundColor(Color.rgb(82, 218, 199));
}
else {
// Other color
whatever.setTextColor(Color.rgb(0, 0, 0));
whatever.setBackgroundColor(Color.rgb(255, 0, 0));
}
// change state of the boolean
stateOfMyTextView = !stateOfMyTextView;
}