1

次のコードを使用して、チェックボックスがオンになっているかどうかに応じて、キーボードの完了ボタンと次のボタンを交互に使用しています。

private OnClickListener checkBoxListener = new OnClickListener(){
@Override
public void onClick(View v) {
    CheckBox cb = (CheckBox) findViewById(R.id.checkbox_referralCode);
    EditText referralCode = (EditText) findViewById(R.id.referralCode);
    EditText phoneText = (EditText) findViewById(R.id.phoneText);

    if(cb.isChecked()) {
        referralCode.setVisibility(View.VISIBLE);
        phoneText.setImeOptions(0x00000005);

    }
    else
        referralCode.setVisibility(View.GONE);

}

}; チェックボックスが最初にチェックされていない場合、phoneText のキーボードは完了と表示されます。チェックボックスを初めてオンにすると、phoneText のキーボードが次に表示されるようになりました。これはまさに私が欲しかったものです。ただし、これに直面している問題は、ユーザーがチェックボックスを最初にチェックした後にチェックボックスをオフにすると、完了したことを表示したいときにキーボードが次に表示されることです。これを修正するために、else ステートメントに次の行を追加しました。

        phoneText.setImeOptions(0x00000006);

したがって、私の新しいコードは次のようになります。

private OnClickListener checkBoxListener = new OnClickListener(){
@Override
public void onClick(View v) {
    CheckBox cb = (CheckBox) findViewById(R.id.checkbox_referralCode);
    EditText referralCode = (EditText) findViewById(R.id.referralCode);
    EditText phoneText = (EditText) findViewById(R.id.phoneText);

    if(cb.isChecked()) {
        referralCode.setVisibility(View.VISIBLE);
        phoneText.setImeOptions(0x00000005);

    }
    else {
        referralCode.setVisibility(View.GONE);
        phoneText.setImeOptions(0x00000006);
    }

}

};

ただし、チェックボックスがオンになっているかどうかに関係なく、phoneText のキーボードは完了としか表示されません。これを修正するにはどうすればよいですか?

4

1 に答える 1

1

キーボードによります。たとえば、Swype はリロード後にのみ imeoptions をチェックすることを知っています。試してみるべきことの 1 つは、キーボードを非表示にして、このイベントで再度開くことです。

最終的にこれを行うと、多くの問題が発生することになります。問題は、Android が 1 つのキーボードではないことです。Android にはキーボードのホット スワップを可能にするフレームワークがありますが、API は常に適切に定義されているとは限らず、キーボード開発者は実装方法を推測する必要があります。2 年間のキーボード開発で、アプリが作成後にフィールドの imeOptions を変更しようとしたことはないと思います。これまでに行われたことがない可能性があるため、フレームワークが変更されたことをキーボードに伝えていない可能性があります。

于 2012-10-31T14:28:52.583 に答える