我有ScroolView,它在线性布局中。在这个线性布局中,我在程序上添加了大约20个TextView。当我按下任何一个TextView时,我将它的颜色改为红色(起初它是白色的)。当我再次按下相同的TextView时,我会检查他的颜色,如果它是红色,我再次将其变为白色。
我想做什么:
我按下示例1 TextView并将其设为RED。然后,当我按下2 TextView时,我将这个设为RED,我想制作1个TextView WHITE。此功能应该是所有TextView。
所以任何想法都是如何做到的?
答案 0 :(得分:0)
你的意思是说你一次只需要一个textview为红色。您可以使用2个变量来完成此操作。一个是布尔值colored
。这表示至少有一个TextView是彩色的。另一个是TextView变量。创建TextView变量lastColoredTextView
。最初让它为null。然后,只要单击文本视图,就将lastColoredTextView
分配给单击的TextView。然后,无论何时点击,只需检查是否colored
然后将lastColoredTextView
的颜色更改为白色。
答案 1 :(得分:0)
更改班级名称,它会正常工作。
公共类Test_stflowActivity扩展了Activity {
TextView current_red_txt_box = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv = null;
LinearLayout lp = new LinearLayout(getApplicationContext());
lp.setOrientation(LinearLayout.VERTICAL);
View.OnClickListener txt_click = new View.OnClickListener() {
@Override
public void onClick(View v) {
current_red_txt_box.setTextColor(Color.WHITE);
TextView tv = (TextView) v;
tv.setTextColor(Color.RED);
current_red_txt_box = tv;
}
};
for (int i = 0; i < 20; i++) {
tv = new TextView(getApplicationContext());
tv.setId(i);
tv.setTextSize(40);
tv.setText("you text");
tv.setTextColor(Color.WHITE);
tv.setOnClickListener(txt_click);
lp.addView(tv);
current_red_txt_box = tv;
}
setContentView(lp);
}
}