我的佈局中有一個WebView和一些按鈕。我的WebView中有一個大標籤。這個應用程序用於編輯文本文件。這些按鈕用於影響WebView中的textarea。當用戶按下一個按鈕(例如箭頭按鈕來移動文本視圖)時,它將關閉鍵盤。我使用了toggleSoftInput,但只是切換鍵盤來顯示或不顯示。我想讓這些按鈕在按下按鈕時停止隱藏軟鍵盤。我沒有發現任何關於我的具體問題。我已經搜索了幾個星期。任何人有任何想法,我怎麼能阻止我的按鈕隱藏Android軟鍵盤?防止按鍵隱藏Android上的軟鍵盤
7
A
回答
4
問題的解決方案可能是始終顯示鍵盤並讓用戶在完成操作後關閉它。
InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
請在您的活動的onCreate()方法中嘗試此代碼。 請注意,如果用戶按下鍵盤上的關閉按鈕或後退按鈕,它應關閉它。我想你不應該干涉這種情況。 當動作完成後,您可以從代碼關閉鍵盤。
4
我在同一條船上,所以如果你找到理想的解決方案,我很樂意聽到它。編輯: 成功!無論如何,或者比以前好得多。我刪除了我的舊解決方案,因爲這個更好。
如https://stackoverflow.com/a/10536033/513038所述,事實證明loadData()隱藏了鍵盤。 但是,我發現在WebView的hideSoftKeyboard()中,它通過imm.isActive(mWebView)檢查InputMethodManager以查看webview是否處於活動狀態。因此,如果您在loadData()之前將焦點切換到EditText,並且立即切換回WebView,則鍵盤仍然存在!它簡單地切換爲大寫,我認爲將焦點返回到webview(實際上,這似乎並不總是會發生;這取決於),但它遠不如鍵盤閃爍而回。
需要發生的要點如下。
擴展WebView。給它一個EditText字段:
public EditText mFocusDistraction;
在構造函數中,有下面幾行:
mFocusDistraction = new EditText(context);
addView(mFocusDistraction);
然後覆蓋使用loadURL():
public void loadUrl(String s) {
mFocusDistraction.requestFocus();
super.loadUrl(s);
this.requestFocus();
}
這應該得到它的工作,基本上是這樣。這是一個有點馬車,不過,這裏有一個更加完整的類:
import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.webkit.WebView;
import android.widget.EditText;
public class WebViewMod extends WebView {
public EditText mFocusDistraction;
public Context mContext;
public WebViewMod(Context context) {
super(context);
init(context);
}
public WebViewMod(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
public WebViewMod(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init(context);
}
public WebViewMod(Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) {
super(context, attrs, defStyle, privateBrowsing);
init(context);
}
public void init(Context context) {
// This lets the layout editor display the view.
if (isInEditMode()) return;
mContext = context;
mFocusDistraction = new EditText(context);
mFocusDistraction.setBackgroundResource(android.R.color.transparent);
this.addView(mFocusDistraction);
mFocusDistraction.getLayoutParams().width = 1;
mFocusDistraction.getLayoutParams().height = 1;
}
@Override
public void loadUrl(final String url) {
if (mContext instanceof Activity && this.isFocused()) {
((Activity)mContext).runOnUiThread(new Runnable() {
@Override
public void run() {
mFocusDistraction.requestFocus();
WebViewMod.super.loadUrl(url);
WebViewMod.this.requestFocus();
}
});
} else {
super.loadUrl(url);
}
}
}
0
Xamarin的Android(備選):
InputMethodManager inputManager = (InputMethodManager)GetSystemService(Context.InputMethodService);
inputManager.ToggleSoftInput (ShowFlags.Forced, HideSoftInputFlags.ImplicitOnly);
相關問題
- 1. 隱藏軟鍵盤
- 2. Android:在按鈕上隱藏鍵盤按
- 3. 在Android中完成鍵盤上隱藏軟鍵盤?
- 4. 軟鍵盤隱藏的EditText
- 5. 隱藏Android鍵盤按鍵預覽
- 6. 隱藏返回鍵上的軟鍵盤按
- 7. 如何防止鍵盤被隱藏?
- 8. 如何隱藏軟鍵盤?
- 9. 如何隱藏EditText上的軟鍵盤
- 10. 如何在WindowsPhone/Windows 8.1上按Enter鍵時隱藏軟鍵盤?
- 11. Android:觸摸EditText時隱藏軟鍵盤
- 12. 在新頁面上隱藏軟鍵盤
- 13. 阻止隱藏視圖的鍵盤android
- 14. 的Flex防止軟鍵盤從收盤
- 15. 如何在軟鍵盤顯示時隱藏EditText軟鍵盤?
- 16. Android的webview。鍵盤隱藏
- 17. 「隱藏鍵盤按鈕」的鍵碼
- 18. 隱藏android鍵盤按下輸入
- 19. IPad鍵盤「隱藏按鈕」
- 20. 如何防止Android鍵盤隱藏編輯文本?
- 21. 隱藏iPhone上的鍵盤
- 22. 按HOME鍵鍵盤不能隱藏
- 23. Android鍵盤隱藏LinerLayout
- 24. 在android中隱藏鍵盤?
- 25. 隱藏MonoDroid中的軟鍵盤
- 26. 檢測隱藏的軟鍵盤
- 27. 無法隱藏EditTextPreference的軟鍵盤
- 28. 如何隱藏WP7中的軟鍵盤?
- 29. 顯示/隱藏Cordova的軟鍵盤
- 30. 隱藏鍵盤
這是從先前選擇的輸入/文本字段失去焦點的問題。 1)選擇輸入用於輸入 2)loadUrl被稱爲 3)鍵盤仍然打開,但鍵入它什麼都不做(你不再輸入相同的輸入 –
@HaykSaakian真的嗎?我不知道;我對我有用,而且我不會在我把它放在這裏時犯錯。我假設你正在嘗試輸入與運行loadUrl相同的webview,對吧? – Erhannis
也許這只是一小段時間窗口,在你的情況下,你沒有注意到它?在我的情況下,我有一個頁面,我每秒多次調用loadUrl(聊天頁面使用java websockets,使用loadUrl使用javascript注入消息) –