2012-05-08 174 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); 
} 

}