Intereting Posts
रेट्रोफ़िट @ पार्ट मल्टीपार्ट्डी। @ Multipart के साथ का हिस्सा अपवाद छोड़ देता है सत्यापित करें कि एंड्रॉइड एपीके को पुनर्प्रेषित नहीं किया गया है? जेसूप टेबल से तालिका से डेटा प्राप्त करें java.lang.RuntimeException: गतिविधि को इन्स्तांत करने में असमर्थ ComponentInfo / ClassNotFoundException मैं अपने ऐप में एटोम भुगतान गेटवे को कैसे एकीकृत कर सकता हूं? एंड्रॉइड – छवि दृश्य पर क्लिक करें एंड्रॉइड एडीबी (ओएसएक्स शेर) गैलेक्सी नेक्सस, जेली बीन को पहचान नहीं करता है एंड्रॉइड मार्केट / प्ले स्टोर में प्रोमोशनल और फ़ीचर ग्राफिक क्या है? Android Google Geofencing संक्रमण कूदता भी डिवाइस चलती नहीं है एंड्रॉइड ऐप विकसित करते समय आप कई वातावरणों का प्रबंधन कैसे करते हैं? सूची दृश्य में यूट्यूब गोडता जेसन पार्सिंग एंड्रॉइड स्टूडियो में मुझे एक त्रुटि है फ्रैग्मेंट और डायलॉग फ्रेग्मेंट के बीच संचार एंड्रॉइड: एंड्रॉइड डिवाइस पर 3 जी या वाईफ़ाई नेटवर्क चालू है या उपलब्ध है या नहीं एंड्रॉइड: मैं मोबाइल वेब द्वारा फेसबुक एथ को कैसे लागू कर सकता हूं?

कैसे WebView में नरम कीबोर्ड को अक्षम करें

मुझे अपने वेबविवे में और ओपन सोफ़्ट कीबोर्ड को WebView में सभी एडिटेक्स्ट्स में अक्षम करना पड़ता है (मैं इसे तक पहुंच नहीं सकता क्योंकि यह वेबव्यू में है)।

मैं 'एंड्रॉइड का उपयोग करने की कोशिश करता हूं: windowSoftInputMode = "स्टेट ऐलेवेहैड"' मेरी मैनिफ़ेस्ट फ़ाइल में, लेकिन जब मैं संपादन योग्य फ़ील्ड में क्लिक करता हूं तो कीबोर्ड पॉपअप।

WebView में निष्क्रिय कीबोर्ड को अक्षम करने के लिए सही समाधान क्या है?

संपादित करें:

मुझे खुले हुए कुंजीपटल के बाद करीब कीबोर्ड के लिए समाधान (इस पोस्ट में @ g00dy और @काची पोस्ट में https://stackoverflow.com/a/9108219/1665964 ) मिलते हैं:

public class ActivityBrowser extends Activity { private static WebView webviewHTML; private static View viewRootHTML; private static int iViewRootHTMLHeightDifferent; public static Context contextBrowser; { contextBrowser = this; } public class webViewClient extends WebViewClient { @Override public void onPageStarted( WebView view, String url, Bitmap favicon) { if( view == webviewHTML) super.onPageStarted( view, url, favicon); } @Override public void onPageFinished( WebView view, String url) { if( view == webviewHTML) super.onPageFinished( view, url); } @Override public boolean shouldOverrideUrlLoading( WebView view, String url) { if( view == webviewHTML) view.loadUrl( url); return false; // return super.shouldOverrideUrlLoading( view, url); } @Override public void onReceivedError( WebView view, int errorCode, String description, String failingUrl) { if( view == webviewHTML) ApplicationLeta.fPopup( getString( R.string.sPopupErrorSiteOpen) + " : " + description); // ActivityBrowser.this.finish(); } public void onReceivedSslError( WebView view, SslErrorHandler handler, SslError error) { if( view == webviewHTML) handler.proceed(); } } @Override public boolean dispatchTouchEvent( MotionEvent motionEvent) { super.dispatchTouchEvent( motionEvent); if( motionEvent.getAction() == MotionEvent.ACTION_MOVE) return true; if( motionEvent.getAction() == MotionEvent.ACTION_UP) { // do something } if( motionEvent.getAction() == MotionEvent.ACTION_UP) { // do something } return false; } @Override public void onBackPressed() { } @Override public void onWindowFocusChanged( boolean eFocus) { super.onWindowFocusChanged( eFocus); if( eFocus == false) { fKeyboardClose(); new Thread( new Runnable() { @Override public void run() { try { Instrumentation inst = new Instrumentation(); inst.sendKeyDownUpSync( KeyEvent.KEYCODE_BACK); } catch( Exception e) {} } } ).start(); } } private void fKeyboardClose() { InputMethodManager inputMethodManager = (InputMethodManager)getSystemService( Activity.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow( getCurrentFocus().getWindowToken(), 0); } public OnGlobalLayoutListener onGlobalLayoutListener = new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect rect = new Rect(); viewRootHTML.getWindowVisibleDisplayFrame( rect); iViewRootHTMLHeightDifferent = viewRootHTML.getRootView().getHeight() - (rect.bottom - rect.top); if( iViewRootHTMLHeightDifferent > 50) fKeyboardClose(); } }; @SuppressWarnings( "deprecation") @SuppressLint( "SetJavaScriptEnabled") public void onCreate( Bundle savedInstanceState) { super.onCreate( savedInstanceState); setContentView( R.layout.browser); if( savedInstanceState == null) { viewRootHTML = findViewById( R.id.linearLayoutHTML); viewRootHTML.getViewTreeObserver().addOnGlobalLayoutListener( onGlobalLayoutListener); webviewHTML = (WebView) findViewById( R.id.webviewHTML); WebSettings webSettings = webviewHTML.getSettings(); webSettings.setJavaScriptEnabled( true); webSettings.setJavaScriptCanOpenWindowsAutomatically( true); webviewHTML.setWebViewClient( new wiewClient()); webviewHTML.loadUrl( ApplicationLeta.sAppInterviewURL); } } } 

यह कोड भी सिस्टम संदेश "पाठ संपादित करें / इनपुट विधि" को बंद करता है जब उपयोगकर्ता इनपुट फ़ील्ड पर लम्बे समय तक रहता है।

परंतु! यह कोड करीब कीबोर्ड खोलने के बाद ही। कुंजीपटल कुछ मिलिसेकेंड और यूज़र (फास्ट यूज़र) को दिखाई देता है कीबोर्ड पर कोई भी कुंजी दबा सकता है। यह सबसे अच्छी स्थिति नहीं है

हो सकता है कि 100% अक्षम कीबोर्ड को बिना खुले बिना सबसे अच्छा तरीका मौजूद हो?

Solutions Collecting From Web of "कैसे WebView में नरम कीबोर्ड को अक्षम करें"

यह उत्तर मेरे लिए काम किया (एंड्रॉइड वेबलाइन इंडिआ द्वारा प्रदान किया गया): https://stackoverflow.com/a/29409478/4813198

अपने layout.xml में मुख्य (मूल) लेआउट में निम्न कोड जोड़ें:

 > > android:descendantFocusability="blocksDescendants" > 

और अपने वेबदृश्य में निम्नलिखित गुणों को सेट करें:

 > android:focusable="false" > android:focusableInTouchMode="true" 

कुंजीपटल छुपा राज्य के लिए:

 public void hideSoftKeyboard(View v) { Activity activity = (Activity) v.getContext(); InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0); } 

EditTexts अक्षम करने के लिए:

android:editable="false" सेट करें android:editable="false" उनके क्रियाकलाप में EditText.setFocusable(false) के लेआउट में।

संपादित करें:

WebView में क्लिक ईवेंट का पता लगाने के लिए इसका उपयोग करें:

  mWebView.setOnTouchListener(new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { // The code of the hiding goest here, just call hideSoftKeyboard(View v); return false; } }); 

एक तरह का हैक समाधान जो मेरे दिमाग में आया था लेकिन फिर भी आवश्यक है – कीबोर्ड को छुपाता है ताकि उपयोगकर्ता उसे नहीं देख सकें:

 public class WebViewEx extends WebView { private Handler mHandler; @Override public boolean onTouchEvent(MotionEvent event) { ensureKeyboard(); return super.onTouchEvent(event); } private void ensureKeyboard() { if(mHandler == null){ mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); closeKeyboard(); sendEmptyMessageDelayed(0, 10); } }; } mHandler.removeCallbacksAndMessages(null); mHandler.sendEmptyMessage(0); mHandler.postDelayed(new Runnable() { @Override public void run() { mHandler.removeCallbacksAndMessages(null); } }, 300); } private void closeKeyboard() { InputMethodManager inputMethodManager = (InputMethodManager) getContext().getSystemService(Activity.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(getWindowToken(), 0); } } 

पूर्वनिर्धारित अवधि के दौरान फ़ंक्शन के तीव्र कॉल के कारण ओवरहेड को कम करने के लिए विलंब के साथ खेलने के लिए बेझिझक। मेरा मानना ​​है कि अनुकूलतम मान डिवाइस के आधार पर भिन्न हो सकते हैं।

इस तरह के एक समाधान की कोशिश करो, यह बहुत आसान है:

 final WebView webView = (WebView) findViewById(R.id.webView); webView.getSettings().setJavaScriptEnabled(true); final String js = "javascript: var allInputs = document.getElementsByTagName('input'); for (var i = 0, len = allInputs.length; i < len; ++i) { allInputs[i].readOnly = true;}"; webView.setWebViewClient(new WebViewClient(){ @Override public void onPageFinished(WebView view, String url) { if (Build.VERSION.SDK_INT >= 19) { view.evaluateJavascript(js, new ValueCallback<String>() { @Override public void onReceiveValue(String s) { } }); } else { view.loadUrl(js); } } }); webView.loadUrl("https://www.google.de/");