0

私はScroolViewを持っていて、それは線形レイアウトの中にあります。この線形レイアウトでは、プログラムで約20のTextViewを追加しました。これらのTextViewのいずれかを押すと、色が赤に変わります(最初は白でした)。同じTextViewをもう一度押すと、彼の色を確認し、それが赤の場合は再び白にします。

私がやりたいこと:

たとえば、1つのTextViewを押して、赤にします。次に、2つのTextViewを押すと、これを赤にし、1つのTextViewを白にします。この機能は、すべてTextViewである必要があります。

それで、これを行う方法はありますか?

4

2 に答える 2

0

クラス名を変更すると、正常に動作します。

public class Test_stflowActivity extends Activity {

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 に答える
0

一度に 1 つのテキストビューだけを赤くする必要があると言う意味です。これは、2 つの変数を使用して行うことができます。1 つはブール値coloredです。これは、少なくとも 1 つの TextView が色付けされていることを示します。もう 1 つは TextView 変数です。TextView 変数を作成しますlastColoredTextView。最初は null にします。次に、テキストビューがクリックされるたびlastColoredTextViewに、クリックされた TextView に を割り当てます。次に、クリックするたびにcolored、色lastColoredTextViewを白に変更するかどうかを確認します。

于 2012-05-08T09:04:40.233 に答える