Java 检查和更改文本视图文本颜色

Java 检查和更改文本视图文本颜色,java,android,Java,Android,我有ScroolView,它在线性布局中。在这个线性布局中,我通过编程添加了大约20个TextView。当我按下任何一个TextView时,我会将其颜色更改为红色(起初是白色)。当我再次按下同一文本视图时,我会检查他的颜色,如果是红色,我会再次将其变为白色 我想做的是: 我按example 1 TextView并将其设为红色。然后,当我按下2文本视图时,我将这个文本视图设为红色,我想将1文本视图设为白色。此功能应在所有TextView中使用 你知道怎么做吗 你的意思是说一次只需要一个文本视图就可

我有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)