0

我有 ScroolView,它在线性布局中。在这个线性布局中,我以编程方式添加了大约 20 个 TextView。当我按下其中任何一个 TextView 时,我将它的颜色更改为红色(起初它是白色的)。当我再次按下相同的 TextView 时,我检查他的颜色,如果是红色,我再次将其设为白色。

我想做的事:

例如,我按 1 TextView 并将其设为 RED。然后,当我按 2 TextView 时,我将其设为 RED,我想将 1 TextView 设为 WHITE。这个功能应该是TextView。

那么有什么想法可以做到这一点吗?

4

2 回答 2

0

你的意思是说你只需要一个文本视图是红色的。您可以使用 2 个变量来执行此操作。一个是布尔值colored。这表明至少有一个 TextView 是彩色的。另一个是 TextView 变量。创建一个 TextView 变量lastColoredTextView。最初让它为空。然后,每当单击 textview 时,将 分配lastColoredTextView给单击的 TextView。然后每当您单击时,只需检查是否colored将颜色更改lastColoredTextView为白色。

于 2012-05-08T09:04:40.233 回答
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);
}

}

于 2012-05-08T09:56:54.357 回答