我的佈局中有一個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. 隱藏android軟鍵盤當軟鍵盤按一鍵時
- 2. Android軟鍵盤隱藏RecyclerView
- 3. Android軟鍵盤隱藏按鈕
- 4. 隱藏軟鍵盤
- 5. Android:在按鈕上隱藏鍵盤按
- 6. 在Android中完成鍵盤上隱藏軟鍵盤?
- 7. 軟鍵盤隱藏的EditText
- 8. 隱藏返回鍵上的軟鍵盤按
- 9. Android的軟鍵盤會隱藏無故
- 10. 隱藏Android鍵盤按鍵預覽
- 11. 如何防止鍵盤被隱藏?
- 12. 可靠隱藏軟鍵盤
- 13. 隱藏軟鍵盤問題
- 14. 如何隱藏軟鍵盤?
- 15. 如何隱藏軟鍵盤?
- 16. 隱藏iOS軟鍵盤AngularJS
- 17. Android:AutoCompleteTextView隱藏軟鍵盤
- 18. 避免隱藏軟鍵盤
- 19. 如何隱藏EditText上的軟鍵盤
- 20. 如何在WindowsPhone/Windows 8.1上按Enter鍵時隱藏軟鍵盤?
- 21. 隱藏軟鍵盤或強制改變焦點隱藏鍵盤
- 22. 在android中隱藏軟鍵盤
- 23. 如何在android中隱藏軟鍵盤
- 24. Android軟鍵盤隱藏分割條
- 25. Android:隱藏軟輸入鍵盤
- 26. Android:觸摸EditText時隱藏軟鍵盤
- 27. 在新頁面上隱藏軟鍵盤
- 28. 的Flex防止軟鍵盤從收盤
- 29. 阻止隱藏視圖的鍵盤android
- 30. 防止鍵盤隱藏警報對話框的提交按鈕
這是從先前選擇的輸入/文本字段失去焦點的問題。 1)選擇輸入用於輸入 2)loadUrl被稱爲 3)鍵盤仍然打開,但鍵入它什麼都不做(你不再輸入相同的輸入 –
@HaykSaakian真的嗎?我不知道;我對我有用,而且我不會在我把它放在這裏時犯錯。我假設你正在嘗試輸入與運行loadUrl相同的webview,對吧? – Erhannis
也許這只是一小段時間窗口,在你的情況下,你沒有注意到它?在我的情況下,我有一個頁面,我每秒多次調用loadUrl(聊天頁面使用java websockets,使用loadUrl使用javascript注入消息) –