android android系統 - 強制打開軟鍵盤




android下載 android手機 (9)

我已經測試過,這是有效的:

... //顯示軟鍵盤

imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

//隱藏它,再次調用該方法

imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

我試圖在一個Activity中強制打開Soft Keyboard並抓取輸入的所有內容,因為我想自己處理輸入,我沒有EditText。 目前我已經嘗試了這個,但它不起作用。 我想在mAnswerTextView下打開Soft Keyboardto(注意:它是TextView而不是EditText)。

    InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    // only will trigger it if no physical keyboard is open
    mgr.showSoftInput(mAnswerTextView, InputMethodManager.SHOW_IMPLICIT);
  1. 如何強制打開軟鍵盤
  2. 如何獲取輸入的所有內容,以便我可以處理每個角色。 我想在處理之後從軟鍵盤中清除每個字符。 即,用戶不應該在軟鍵盤中輸入整個單詞。

如果你想控制內部活動的軟鍵盤,那麼使用這個代碼:

//create soft keyboard object
InputMethodManager imm = (InputMethodManager)this.getSystemService(INPUT_METHOD_SERVICE);

//1.USE
your_view.setFocusableInTouchMode(true); //Enable touch soft keyboard to this view
//or
your_view.setFocusable(true); //Enable keyboard to this view
imm.showInputMethod(your_view, InputMethodManager.SHOW_IMPLICIT);

//2.USE show keyboard if is hidden or hide if it is shown
imm.toggleSoftInputFromWindow(your_view.getWindowToken(),InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_IMPLICIT_ONLY);
//or
imm.toggleSoftInputFromWindow(InputMethodManager.SHOW_IMPLICIT, InputMethodManager.HIDE_IMPLICIT_ONLY);

//3.USE (you cannot control imm)
this.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

//4.USE (with Dialog)
Dialog d = new Dialog(this, android.R.style.Theme_Panel);
d.getWindow().setTitle(null);
d.setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
d.setOnKeyListener(keyListener);
d.setCanceledOnTouchOutside(true);
d.setCancelable(true);
d.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
d.show();

//to hide keyboard call:
d.dismiss();
//if you want get soft keyboard visibility call:
d.isShowing();

有時其他答案不起作用。
這是另一種方式..

它將通過監聽窗口焦點強制鍵盤顯示活動開始的時間。 onWindowFocusChanged()它將清除並請求EditText的焦點,然後將軟輸入模式設置為visible,並將選擇設置為框中的文本。 如果您從活動中調用它,這應始終有效。

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        mEditText.clearFocus();
        mEditText.requestFocus();
        getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
        mEditText.setSelection(mEditText.getText().toString().length());
    }
}

你可能還需要

mEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (hasFocus) {
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.showSoftInput(mEditText, InputMethodManager.SHOW_IMPLICIT);
            }
        }
    });

編輯:我也看到鍵盤未在嵌套片段中打開,請注意這些情況。


簡單地說,使用添加2行就像魅力一樣:

如果使用XML

android:focusable="true"
android:focusableInTouchMode="true"

其他Java:

view.setFocusableInTouchMode(true);
view.requestFocus();

試試這個強制打開軟鍵盤:

((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

然後你可以使用這段代碼來關閉鍵盤:

((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(_pay_box_helper.getWindowToken(), 0);

if(search.getText().toString().trim().isEmpty()) {
    InputMethodManager imm = (InputMethodManager)getSystemService(
              Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(search.getWindowToken(), 0);
}

可悲的是,儘管我喜歡對其中一個回復進行投票,但沒有一個對我有用。 似乎解決方案是等待佈局階段完成。 在下面的代碼中,請注意我如何檢查showKeyboard方法是否返回TRUE,並且當我刪除全局佈局偵聽器時。 沒有這樣做,它被擊中和錯過了。 現在看起來效果很好。

您需要在onResume()中理想地執行以下操作

@Override
public void onResume()
{
    super.onResume();

    ViewTreeObserver vto = txtTaskTitle.getViewTreeObserver();
            vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
            {
                @Override
                public void onGlobalLayout()
                {
                    if (txtTaskTitle.requestFocus())
                    {
                        if (showKeyboard(getContext(), txtTaskTitle))
                        {
                            txtTaskTitle.getViewTreeObserver().removeOnGlobalLayoutListener(this);
                        }
                    }
                }
            });
}

public static boolean showKeyboard(Context context, EditText target)
{
        if (context == null || target == null)
        {
            return false;
        }

        InputMethodManager imm = getInputMethodManager(context);

        ((InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(target, InputMethodManager.SHOW_FORCED);

        boolean didShowKeyboard = imm.showSoftInput(target, InputMethodManager.SHOW_FORCED);
        if (!didShowKeyboard)
        {
            didShowKeyboard = ((InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(target, InputMethodManager.SHOW_FORCED);
        }
        return didShowKeyboard;
}

強制鍵盤打開我使用過

this.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);

它對我有用。


  // Url = "url of image"
  Drawable drawable = LoadImageFromWebOperations(Url);
  mImageofTheMonth.setImageDrawable(drawable);

private Drawable LoadImageFromWebOperations(String url) {

    try {
        InputStream is = (InputStream) new URL(url).getContent();
        Drawable d = Drawable.createFromStream(is, "src name");
        return d;
    } catch (Exception e) {
        System.out.println("Exc=" + e);
        return null;
    }

}




android