Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
禁用Android中的软件键盘,直到选择EditText_Android_Android Layout_Android Softkeyboard - Fatal编程技术网

禁用Android中的软件键盘,直到选择EditText

禁用Android中的软件键盘,直到选择EditText,android,android-layout,android-softkeyboard,Android,Android Layout,Android Softkeyboard,在选择特定的编辑文本之前,如何防止软件键盘消失?我的版面中有几个编辑文本,当它打开时,第一个文本会自动选择,并显示软件键盘 我知道我可以通过设置android:focusable=“false”来禁用它。但是,单击该项目并显示该项目是不可能的 我想要的是:活动启动,用户看到所有EditText,然后单击其中一个,软件键盘打开,可以在EditText中输入内容。这可能吗?在您的活动中onCreate() 在您的活动中onCreate() 这段代码对焦点处理和键盘显示有很好的效果 此代码对焦点处理和

在选择特定的编辑文本之前,如何防止软件键盘消失?我的版面中有几个编辑文本,当它打开时,第一个文本会自动选择,并显示软件键盘

我知道我可以通过设置android:focusable=“false”来禁用它。但是,单击该项目并显示该项目是不可能的


我想要的是:活动启动,用户看到所有EditText,然后单击其中一个,软件键盘打开,可以在EditText中输入内容。这可能吗?

在您的活动中
onCreate()


在您的活动中
onCreate()

这段代码对焦点处理和键盘显示有很好的效果


此代码对焦点处理和键盘显示有很好的效果…

我尝试此代码是为了让键盘仅在用户单击edittext时显示,所有其他解决方案都不适用于我。 这有点奇怪,但从现在起我找到了解决办法。 您必须将此事件放入版面上的所有编辑文本中

OnClickListener click = new OnClickListener() {
    @Override
    public void onClick(View v) {
        v.setFocusableInTouchMode(true);
        v.requestFocusFromTouch();
    }
};
OnFocusChangeListener focus = new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!hasFocus) {
            v.setFocusableInTouchMode(false);
        }
    }
};
像这样:

EditText text = (EditText) getActivity().findViewById(R.id.myText);
text.setText("Some text");
text.setFocusableInTouchMode(false);
text.setOnClickListener(click); 
text.setOnFocusChangeListener(focus);
编辑:

我只是做了一个自定义的编辑文本,以便于在我的项目中使用,希望它是有用的

public class EditTextKeyboardSafe extends EditText {
    public EditTextKeyboardSafe(Context context) {
        super(context);
        initClass();
    }

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

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

    private void initClass() {
        this.setFocusableInTouchMode(false);
        this.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                v.setFocusableInTouchMode(true);
                v.requestFocusFromTouch();
            }
        });
        this.setOnFocusChangeListener(new OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus) {
                    v.setFocusableInTouchMode(false);
                }
            }
        });
    }

}

我尝试这样做是为了让键盘只在用户单击edittext时出现,而其他所有解决方案都不适合我。 这有点奇怪,但从现在起我找到了解决办法。 您必须将此事件放入版面上的所有编辑文本中

OnClickListener click = new OnClickListener() {
    @Override
    public void onClick(View v) {
        v.setFocusableInTouchMode(true);
        v.requestFocusFromTouch();
    }
};
OnFocusChangeListener focus = new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (!hasFocus) {
            v.setFocusableInTouchMode(false);
        }
    }
};
像这样:

EditText text = (EditText) getActivity().findViewById(R.id.myText);
text.setText("Some text");
text.setFocusableInTouchMode(false);
text.setOnClickListener(click); 
text.setOnFocusChangeListener(focus);
编辑:

我只是做了一个自定义的编辑文本,以便于在我的项目中使用,希望它是有用的

public class EditTextKeyboardSafe extends EditText {
    public EditTextKeyboardSafe(Context context) {
        super(context);
        initClass();
    }

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

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

    private void initClass() {
        this.setFocusableInTouchMode(false);
        this.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                v.setFocusableInTouchMode(true);
                v.requestFocusFromTouch();
            }
        });
        this.setOnFocusChangeListener(new OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus) {
                    v.setFocusableInTouchMode(false);
                }
            }
        });
    }

}