繁体   English   中英

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

[英]Close/hide the Android Soft Keyboard and Show custom keyboard

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

下面是我的源代码,

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());
        }
 }

在这个问题上,当我当时开始活动时,我希望印地语键盘应该显示并且默认键盘应该不可见,但是问题是

在启动时不会显示印地文键盘,并且会弹出默认键盘

// 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();
        }

    }

使用它隐藏键盘imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 并显示键盘再次调用它。 首先调用hideDefaultKeyboard(); enableHindiKeyboard();之前enableHindiKeyboard(); 希望能帮助到你。

尝试这个

在您的AndroidManifest.xml中:

<activity android:name="com.your.package.ActivityName"
      android:windowSoftInputMode="stateHidden"  />
try
{
     InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
     inputMethodManager.toggleSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.SHOW_FORCED, 0);
}
catch (Exception e)
{
     e.printStackTrace();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM