Ho una visualizzazione Web e alcuni pulsanti nel mio layout. C'è un tag grande nella mia WebView. Questa app viene utilizzata per modificare i file di testo. I pulsanti sono usati per effettuare la textarea all'interno della mia WebView. Quando l'utente preme un pulsante (ad esempio un pulsante freccia per spostare la visualizzazione del testo) chiude la tastiera. Ho usato toggleSoftInput, ma questo semplicemente attiva o disattiva la tastiera. Voglio che i pulsanti smettano di nascondere la tastiera virtuale quando viene premuto il pulsante. Non ho trovato nulla sul mio problema specifico. Ho cercato per settimane. Qualcuno ha qualche idea su come posso impedire ai miei pulsanti di nascondere la tastiera virtuale su Android?Previene i pulsanti per nascondere la tastiera virtuale su Android
risposta
La soluzione al problema potrebbe essere quella di mantenere sempre visualizzata la tastiera e consentire all'utente di chiuderla quando vengono eseguite le azioni.
InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.toggleSoftInput (InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
provare questo codice nel metodo onCreate() della vostra attività. Si noti che se l'utente preme il pulsante di chiusura sulla tastiera o il pulsante indietro dovrebbe chiuderlo. E immagino che non dovresti interferire con quello scenario. E quando le azioni sono terminate, puoi chiudere la tastiera dal codice.
Sono esattamente sulla stessa barca, quindi se hai mai trovato una soluzione ideale, mi piacerebbe sentirla.
MODIFICA: Successo! O molto meglio di prima, comunque. Ho eliminato la mia vecchia soluzione, poiché questa è migliore.
Come indicato in https://stackoverflow.com/a/10536033/513038, risulta che loadData() nasconde la tastiera. Tuttavia,, ho scoperto che in hideSoftKeyboard() di WebView, controlla InputMethodManager per vedere se la webview è attiva, tramite imm.isActive (mWebView).
Quindi, se si passa a un EditText prima di loadData(), e si passa immediatamente a WebView dopo, la tastiera rimane in posizione! Passa brevemente in maiuscolo, penso di tornare a focalizzarmi sulla webview, (in realtà, questo non sembra sempre accadere, dipende) ma è molto meno evidente della tastiera che sfarfalla e torna indietro.
L'essenza di ciò che deve accadere è la seguente.
Estendere WebView. Dategli un campo EditText:
public EditText mFocusDistraction;
Nel costruttore, hanno le seguenti righe:
mFocusDistraction = new EditText(context);
addView(mFocusDistraction);
poi sovrascrivere loadURL():
public void loadUrl(String s) {
mFocusDistraction.requestFocus();
super.loadUrl(s);
this.requestFocus();
}
Quello dovrebbe farlo funzionare, in pratica. E 'un po' buggy, però, quindi ecco una classe più completa:
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);
}
}
}
Xamarin Android (Alternativa):
InputMethodManager inputManager = (InputMethodManager)GetSystemService(Context.InputMethodService);
inputManager.ToggleSoftInput (ShowFlags.Forced, HideSoftInputFlags.ImplicitOnly);
- 1. HTML Mobile - forzare la tastiera virtuale per nascondere
- 2. Nascondi la tastiera virtuale su Done Keypress in Android?
- 3. L'app per Android inizia con la tastiera virtuale aperta
- 4. Android: AutoCompleteTextView nascondi tastiera virtuale
- 5. tastiera virtuale non è presente, non può nascondere la tastiera - Appium Android
- 6. Estendi tastiera virtuale Android
- 7. Come nascondere la tastiera virtuale all'interno di un frammento?
- 8. PlayN - Tastiera virtuale su iOS e Android
- 9. Come forzare per mostrare e nascondere la tastiera virtuale se non è disponibile la tastiera hardware?
- 10. Disattiva la tastiera virtuale su NumberPicker
- 11. Come nascondere FAB quando la tastiera virtuale è aperta.
- 12. Impossibile nascondere la tastiera virtuale di SearchView iconfiedbydefault (false)
- 13. Come nascondere la tastiera virtuale quando si cambiano le schede?
- 14. come nascondere la tastiera virtuale al tocco di uno spinner
- 15. Nascondere la tastiera virtuale sull'attività senza alcuna operazione con la tastiera
- 16. Nascondi pulsante del microfono Android tastiera virtuale
- 17. Mostra tastiera virtuale in Android TabLayout
- 18. scorrimento verso l'alto per la tastiera virtuale
- 19. Il modo migliore per nascondere la tastiera in Android
- 20. La tastiera virtuale non si nasconde automaticamente in Android
- 21. Pulsante per mostrare la tastiera virtuale?
- 22. Tastiera numerica su Android
- 23. Come chiudere la tastiera virtuale in frammento
- 24. Tastiera virtuale Android attiva blocco maiuscole
- 25. Previene il movimento dell'interfaccia utente quando appare la tastiera
- 26. Perché la tastiera virtuale viene nascosta al ripristino?
- 27. nascondere/disattivare le emoticon al livello di programmazione sulla tastiera virtuale Android
- 28. Android: EditText e Button; quando si fa clic su Button, sfocare EditText e nascondere la tastiera virtuale?
- 29. chiama la tastiera virtuale Android da un file C++
- 30. Perché la tastiera virtuale non scompare?
questo ha il problema di perdere la concentrazione da un campo di input/testo precedentemente selezionato. 1) selezionare l'input per la digitazione 2) loadUrl si chiama 3) la tastiera è ancora attiva, ma digitarla non fa nulla (non stai digitando più nello stesso input –
@HaykSaakian Davvero?Non so; quello che ho funziona per me, e io non penso che abbia commesso degli errori quando l'ho messo qui. Suppongo che tu stia cercando di digitare la stessa webview che sta eseguendo loadUrl, giusto? – Erhannis
forse è solo una piccola finestra di tempo, e nel tuo caso non te ne accorgi? nel mio caso ho una pagina che chiamo loadUrl a molte volte al secondo (pagina di chat che usa websocket java che inietta messaggi usando loadUrl con javascript) –