2

私は現在それを設定しているので、いくつかのTextViewがあります:

  • 一方のボタンがクリックされると更新され、もう一方のボタンはクリックされても変更されません。

  • 他のTextViewには番号が表示されており、いずれかのボタンをクリックしたときに変更したいのですが、現在、すべてのTextViewが表示されており、番号は変更されていません。

他のTextView(以下のnum1-num3)を最初は非表示にしたいのですが、ユーザーがいずれかのボタンをクリックすると、TextViewが表示され、作成したメソッドによって値が更新されます。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_name);
    num1 = randNum();
    num1 = alterNum(num1);      
    num1View = (TextView) findViewById(R.id.number1); 
    num1View.setText("Num1 Number: " + String.valueOf(num1));

    num2 = randNum();
    num2 = alterNum(num2);
    num2View = (TextView) findViewById(R.id.number2); 
    num2View.setText("Num2 Number: " + String.valueOf(num2));

    num3 = randNum();
    num3 = alterNum(num3);
    num3View = (TextView) findViewById(R.id.number3); 
    num3View.setText("Num3 Number: " + String.valueOf(num3));

    // This one is always visible, the ones above should be invisible
    // and appear onClick
    currentNum = randNum();
    myTextView = (TextView) findViewById(R.id.current_number); 
    myTextView.setText("Current Number: " + String.valueOf(currentNum));
    okButton = (Button) findViewById(R.id.ok_button);
    okButton.setOnClickListener(this);
    changeButton = (Button) findViewById(R.id.change_button);
    changeButton.setOnClickListener(this);
}

私のonClick:

@Override
public void onClick(View v) {
    switch (v.getId()) {
    case R.id.num_confirmation:
        //do nothing
        // do not let user hit buttons more than once (either case)
        changeButton.setEnabled(false);
        okButton.setEnabled(false);
        break;
    case R.id.swap_button:
        currentNum = alterNum();
        myTextView.setText("Current Number: " + String.valueOf(currentNum));
        // do not let user hit buttons more than once (either case)
        swapButton.setEnabled(false);
        okButton.setEnabled(false);
        break;
    default:
        break;
    }
}

これはどのように行われますか?

4

2 に答える 2

6

非表示にする必要がある textViews の xml レイアウト ファイルで "visible" の初期値を "invisible" に設定し、onClick メソッドでそのテキスト valie を変更して可視性を変更します。

 myTextView.setVisibility(View.VISIBLE);

ここに役立つはずの同様の質問があります:プログラムでレイアウトの可視性を変更する方法

于 2012-12-09T19:16:01.147 に答える
2
yourTextView.setVisibility(View.VISIBLE);

これにより、テキストビューが表示されます。

yourTextView.setVisibility(View.INVISIBLE);

これにより、テキストビューが非表示になりますが、レイアウトは保持されます。

yourTextView.setVisibility(View.GONE);

これにより、他のビューが再配置できるように削除されます。View.VISIBLE を呼び出して、再び表示させることができます。

たとえば、TextView (findviewbyid) を定義した後にこれを配置できます。

 num1View.setVisibility(View.INVISIBLE);

次に、戻ってきたい場所:

num1View.setVisibility(View.VISIBLE); 
于 2012-12-09T19:14:54.983 に答える