7

私はLinearLayoutいくつかEditTextの を持っていますが、それらはすべて (XML レイアウトではなく) プログラムで作成され、特に ID はありません。

の 1 つを入力してEditTextいて、次の 1 つが (フォーカスに関連して) 無効になっているときに、キーボードの [次の IME] ボタンを押すと、フォーカスは disabledEditTextに進みますが、何も入力できません。それ。

私が期待していたのは、次の有効 EditText化に進むためのフォーカスでした。EditTextを介して無効にすることに加えて、およびをedittext.setEnabled(false)介してフォーカス可能性を無効にし、入力タイプを設定しようとしましたが、役に立ちませんでした。edittext.setFocusable(false)edittext.setFocusableInTouchMode(false)TYPE_NULL

ヒントはありますか?

ありがとう ;)

4

3 に答える 3

12

このブログ投稿のキーボードとサブクラス化によって、次のフォーカス可能オブジェクトがどのように検出されるかを調べることで解決しましたEditText

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.EditText;

public class MyEditText extends EditText {

    public MyEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public MyEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyEditText(Context context) {
        super(context);
    }

    @Override
    public View focusSearch(int direction) {
        View v = super.focusSearch(direction);
        if (v != null) {
            if (v.isEnabled()) {
                return v;
            } else {
                // keep searching
                return v.focusSearch(direction);
            }
        }
        return v;
    }

}

詳細:

ViewGroupの実装は、 を呼び出すFocusFinderfocusSearch()を使用します。の実装は可視性をテストし、実装はフォーカス可能性をテストします。どちらも有効な状態をテストしないため、このテストを上記に追加しました。addFocusables()ViewGroupViewMyEditText

于 2013-08-24T09:24:54.427 に答える