2012-05-08 265 views
0

我有ScroolView,它位于线性布局内部。在这个线性布局中,我添加了20个TextView。当我按下任何TextView时,我将它的颜色改为红色(起初它是白色的)。当我再次按下相同的TextView时,我检查他的颜色,如果它是红色,我再次使它变白。检查并更改TextView文本颜色

我想要做什么:

我按例如1的TextView并使其RED。然后,当我按下2 TextView我使这一个红色,我想让1 TextView白色。这个功能应该在所有的TextView中。

所以任何想法是如何做到这一点?

+0

采取textview..check要在其上单击,并使其红色,并比TextView的白色以外的索引的数组.. – dreamcoder

+0

将OnClick()设置为所有文本视图并在onClick()中迭代所有带有循环的textview以检查颜色,在RED和其他Whit中单击一个。如果点击一个有RED使其变成白色,也可以作为条件。 – user370305

+0

无法根据布尔值设置布尔值以检查颜色是红色(布尔红色= true)还是白色(红色= false),检查它并将其余文本的颜色设置为白色或红色单击。 – John

回答

0

你的意思是在你只需要一个TextView的是红色时说。你可以使用2个变量来做到这一点。一个是布尔型colored。这表明至少有一个TextView被着色。另一个是TextView变量。创建一个TextView变量lastColoredTextView。让它最初为空。然后,无论何时单击textview,将lastColoredTextView分配给单击的TextView。然后,无论您何时点击,只需检查colored,然后将lastColoredTextView的颜色更改为白色。

0

更改类名称,它会正常工作。

公共类Test_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); 
} 

}