3

このトピックについて正確に検索する方法がわからないので、同じ質問がここにないことを願っています。

私の の「メニュー」には、EditText のActivity2 つがあり、ユーザーは 2 つのオプションのいずれかを選択し、 . ただし、最初のには を介し​​て選択できる追加のオプションがあるため、ユーザーがそれをチェックすると、さらにが有効になります。は両方でonCheckedChangeListener を介して無効になり、有効になります。RadioButtonsEditTextRadioButtonCheckBoxCheckBoxEditTextEditTextRadioButtonsCheckBox

radio1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                    if(radio2.isChecked()){
                        radio2.setChecked(false);
                    }
                    edit1.setEnabled(true);
                    check1.setEnabled(true);
                }else{
                    check1.setEnabled(false);
                    check1.setChecked(false);
                }   
            }
        });

ここでの問題は、オプション 1 を選択して最初の に値を入力しEditText、2 番目のオプションがまだ無効になっている場合、「進むボタン」を押すことができることです (どのように呼び出されるのか本当にわかりません。画像を参照してください)。以下)、障害者EditTextが集中します。

ここに画像の説明を入力

そして、ここEditTextに焦点を当てるべきではないものがあります

ここに画像の説明を入力

障害者Viewが焦点を当てることができなかったのではないでしょうか? これが可能であるということは、まったく非論理的です。setFocusable(boolean)これを一般的に設定する方法はありますか、またはステータスを変更するたびに追加する必要がありますか?

4

1 に答える 1

2

setEnabled が false であっても、editTexts は引き続きフォーカスを受け取ることができます。フォーカスを無効にするには、editText.setFocusable(false) を適用します。ソフトキーボードの imeOption をクリックしてこれを適用すると、他の編集可能な要素が存在しない場合、ソフトキーボードが非表示になります。

于 2016-07-13T10:38:18.540 に答える