关闭/隐藏Android软键盘和显示自定义键盘

时间:2013-10-11 06:55:14

标签: java android android-layout android-softkeyboard

我制作了自己的键盘,在我的活动中有一个选项(英语 - 印地语,印地语 - 英语) 当用户选择英语 - 印地语时,默认键盘将打开并隐藏我的自定义键盘或当用户选择印地语 - 英语选项时,默认键盘将被隐藏,自定义键盘将被打开

下面是我的源代码,

private EditText mEt;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    mEt = (EditText) findViewById(R.id.searchText);
    enableHindiKeyboard();
    hideDefaultKeyboard();
 }

用于隐藏默认键盘

private void hideDefaultKeyboard() {
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(mEt.getWindowToken(), 0);
} 

启用印地语键盘

public void enableHindiKeyboard() {      
    try {
            for (int i = 0; i < mB.length; i++)
                mB[i].setOnClickListener(this);

            mBSpace.setOnClickListener(this);
            mBdone.setOnClickListener(this);
            mBack.setOnClickListener(this);
            mBChange.setOnClickListener(this);
            mNum.setOnClickListener(this);
            mEt.setOnTouchListener(MainActivity.this);
            mEt.setOnFocusChangeListener(MainActivity.this);
            mEt.setOnClickListener(MainActivity.this);

        } catch (Exception e) {
            Log.w(getClass().getName(), e.toString());
        }
 }

在这个问题当我开始我的活动的时候我想要印地语键盘应该显示而默认键盘应该是不可见但问题是

启动时不会显示印地语键盘,弹出默认键盘

4 个答案:

答案 0 :(得分:1)

// try this
    public void showSoftKeyboard() {
        try {
            InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
            inputMethodManager.toggleSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.SHOW_FORCED, 0);
        } catch (Exception e) {
            e.printStackTrace();
        }
     }

    public void hideSoftKeyboard() {
        try {
            InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

答案 1 :(得分:0)

使用此按钮隐藏键盘imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);并显示键盘再次调用它。在hideDefaultKeyboard();希望它有所帮助之前先调用enableHindiKeyboard();

答案 2 :(得分:0)

试试这个

在AndroidManifest.xml中:

<activity android:name="com.your.package.ActivityName"
      android:windowSoftInputMode="stateHidden"  />

答案 3 :(得分:0)

try
{
     InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
     inputMethodManager.toggleSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.SHOW_FORCED, 0);
}
catch (Exception e)
{
     e.printStackTrace();
}