Android:软键盘没有显示

时间:2015-10-20 04:59:43

标签: android android-layout android-fragments

我在Fragment内创建ActivityEditText布局中有MainActivityFragment布局属于EditText我的问题是当我点击软键盘未显示的EditText时。

EditText布局中,我创建了

 <EditText
                android:id="@+id/edt_searchContact"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:textCursorDrawable="@drawable/color_cursor"
                android:background="@drawable/edit_text_line_contacts"
                android:focusable="true"
                android:clickable="true"
                android:hint="Search..."/>
 <requestFocus/>

用于向软键盘显示我在Fragment

中给出的代码
 InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
 imm.showSoftInput(edt_searchContact, InputMethodManager.SHOW_IMPLICIT);

在清单中

android:windowSoftInputMode="adjustPan"

我在一个Fragment中有3个Activity,当Fragment出现EditText时,Activity布局中的{{1}}可见。

任何人都可以帮助我 在此先感谢:)

4 个答案:

答案 0 :(得分:0)

在您的活动中尝试此操作

editText = (EditText)findViewById(R.id.txt_yourName);

            // Request focus and show soft keyboard automatically
            editText.requestFocus();
            getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

答案 1 :(得分:0)

试试这个:

editText.setOnFocusChangeListener(new OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                editText.post(new Runnable() {
                    @Override
                    public void run() {
                        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                        imm.showSoftInput(edt_searchContact, InputMethodManager.SHOW_IMPLICIT);
                    }
                });
            }
        });
        editText.requestFocus();

答案 2 :(得分:0)

在你的Activity的onResume()方法中你可以这样写:

EditText et = (EditText) findViewById(R.id.et);
et.requestFocus(); 
InputMethodManager mngr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mngr.showSoftInput(et, InputMethodManager.SHOW_IMPLICIT);

答案 3 :(得分:0)

以下方法对我有用-

InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);