Java 检查和更改文本视图文本颜色
我有ScroolView,它在线性布局中。在这个线性布局中,我通过编程添加了大约20个TextView。当我按下任何一个TextView时,我会将其颜色更改为红色(起初是白色)。当我再次按下同一文本视图时,我会检查他的颜色,如果是红色,我会再次将其变为白色 我想做的是: 我按example 1 TextView并将其设为红色。然后,当我按下2文本视图时,我将这个文本视图设为红色,我想将1文本视图设为白色。此功能应在所有TextView中使用Java 检查和更改文本视图文本颜色,java,android,Java,Android,我有ScroolView,它在线性布局中。在这个线性布局中,我通过编程添加了大约20个TextView。当我按下任何一个TextView时,我会将其颜色更改为红色(起初是白色)。当我再次按下同一文本视图时,我会检查他的颜色,如果是红色,我会再次将其变为白色 我想做的是: 我按example 1 TextView并将其设为红色。然后,当我按下2文本视图时,我将这个文本视图设为红色,我想将1文本视图设为白色。此功能应在所有TextView中使用 你知道怎么做吗 你的意思是说一次只需要一个文本视图就可
你知道怎么做吗 你的意思是说一次只需要一个文本视图就可以变成红色。您可以使用两个变量来实现这一点。一个是布尔值
彩色。这表示至少有一个TextView是彩色的。另一个是TextView变量。创建一个TextView变量lastColoredTextView
。让它最初为null。然后,每当单击textview时,将lastColoredTextView
分配给单击的textview。然后,无论何时单击,只需检查是否有颜色
,然后将lastColoredTextView
的颜色更改为白色 更改类名,它将正常工作
公共类测试\u stflowActivity扩展活动{
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);
}
TextView当前\红色\文本\框=null;
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv=null;
LinearLayout lp=新的LinearLayout(getApplicationContext());
lp.设置方向(线性布局。垂直);
View.OnClickListener txt\u click=new View.OnClickListener(){
@凌驾
公共void onClick(视图v){
当前\红色\文本\框.setTextColor(Color.WHITE);
TextView电视=(TextView)v;
tv.setTextColor(颜色:红色);
当前红色文本框=电视;
}
};
对于(int i=0;i<20;i++){
tv=新文本视图(getApplicationContext());
tv.setId(i);
电视.setTextSize(40);;
tv.setText(“您的文本”);
电视.彩色(彩色.白色);
tv.setOnClickListener(txt_单击);
lp.addView(电视);
当前红色文本框=电视;
}
setContentView(lp);
}
}获取一个textview数组。检查要单击的索引,使其变为红色,并使除该textview之外的其他索引变为白色。将onClick()设置为所有textview,并在onClick()中使用循环迭代所有textview以检查颜色,使单击的一个变为红色,其他变为白色。如果单击一个文本,则另设条件使其变为白色。如果颜色为红色(布尔红色=true)或白色(红色=false),则不能设置要检查的布尔值。根据布尔值,选中它,并在每次文本单击时将剩余文本的颜色设置为白色或红色。在这种情况下,可以使用两个可绘制,您可以将if条件放入onclick方法中。if(textView.getBackground()==drawable)