Android सॉफ्ट कीबोर्ड एडिट टेक्स्ट फील्ड को कवर करता है


161

क्या टेक्स्ट फ़ील्ड को देखने की अनुमति देने के लिए स्क्रीन स्क्रॉल करने का कोई तरीका है?

जवाबों:


163

क्या आप पूछ रहे हैं कि नरम कीबोर्ड के खुलने पर क्या दिखाई देता है? आप windowSoftInputMode के साथ खेलना चाह सकते हैं । अधिक चर्चा के लिए डेवलपर डॉक्स देखें ।


2
यह ठीक काम करता है, लेकिन यह सुनिश्चित करें कि आपके संवाद शैली में आप उपयोग कर रहे हैं, यदि आप कस्टम संवाद शैली का उपयोग कर रहे हैं, तो आपके पास <आइटम का नाम = "android: windowIsFloating"> सत्य </ आइटम> है।
दिमित्री चिस्त्यकोव

ऐसा लगता है कि यह लैंडस्केप मोड (Nexus 7) में काम नहीं करता है, संपादन योग्य तत्व कीबोर्ड के नीचे छिपा रहता है। मैंने WindowSoftInputMode के विभिन्न संयोजनों की कोशिश की। ऐसा लगता है कि मैं WindowIsFloating सेट नहीं कर सकता क्योंकि ActionBar इसका समर्थन नहीं करेगा। या यह भी इस तथ्य के साथ कुछ करना हो सकता है कि मेरा EditText सूची दृश्य आइटम के अंदर है?
संपो सरला - codidact.org

यह मेरे आइटम <<name name = "android: windowTranslucentStatus"> true </ item> को जोड़ने के बाद काम नहीं करेगा। कोई भी यह तय?
मैक्स

1
@Max android:fitsSystemWindows="true"इसे हल करने के लिए अपने मूल दृश्य में जोड़ें ।
डेविड पासमोर

1
कीबोर्ड के ऊपर पूरा लेआउट खींचने के बारे में जब सॉफ्ट कीबोर्ड उपलब्ध है तो व्हाट्सएप की तरह कोई फर्क नहीं पड़ता है ....
करुए बेन्सन कारे

162

मेरे पास वही मुद्दे थे। निम्नलिखित कोड का प्रयास करें:

android:windowSoftInputMode="adjustPan"

इनपुट रखने वाली गतिविधि के गतिविधि टैग में इसे अपने घोषणापत्र में जोड़ें। उदाहरण:

<activity
            android:name=".Activities.InputsActivity"
            ...
            android:windowSoftInputMode="adjustPan"
            />

14
सरलतम उत्तर! एक नोट के रूप में, इसे मेनिफेस्ट फ़ाइल में और उस गतिविधि के तहत जोड़ा जाना चाहिए जिसे हम चाहते हैं।
एनआरआर

4
मेरे मामले में, यह कम से कम मेरे html को गड़बड़ नहीं करता, जैसा adjustResizeकि करेगा, लेकिन यह मेरे इनपुट फ़ील्ड को भी कवर करता है
राहुल डोले

8
इसने मेरी मदद नहीं की
22

1
@vikifor, सुनिश्चित करें कि आप अपने edittext को स्क्रॉलव्यू में शामिल करते हैं। यहां तक ​​कि अगर आपके लेआउट में सिर्फ 3-4 फ़ील्ड हैं, तो अपने सभी फ़ील्ड को स्क्रॉलव्यू में जोड़ें। वर्चुअल कीबोर्ड खुलने पर यह स्क्रॉल करने योग्य बनाता है।
कुलदीप सखिया

ठीक काम करता है, लेकिन जब भी मैं EditText दृश्य को स्पर्श करता हूं, तो कीबोर्ड फिर से तैयार हो जाता है।
इकबाल

55

मेरे पास एक ही मुद्दा था जहां सॉफ्टकबोर्ड एडिटटेक्स्ट दृश्यों के शीर्ष पर था जो स्क्रीन के नीचे रखे गए थे। मैं अपने AndroidManifest.xml फ़ाइल की प्रासंगिक गतिविधि में एक पंक्ति जोड़कर एक समाधान खोजने में सक्षम था।

android:windowSoftInputMode="adjustResize|stateHidden"

यह पूरी गतिविधि टैग की तरह दिखता है:

<activity
        android:name="com.my.MainActivity"
        android:screenOrientation="portrait"
        android:label="@string/title_activity_main"
        android:windowSoftInputMode="adjustResize|stateHidden" >
    </activity>

यहाँ सबसे महत्वपूर्ण मूल्य समायोजन है। यह सॉफ्टबोर्ड के लिए जगह देने के लिए पूरे यूआई को स्थानांतरित कर देगा।


लेकिन यह आपके html के लुक को गड़बड़ कर सकता है यदि आपके css में ज्यादातर प्रतिशत मूल्य हैं
राहुल डोले

क्या आप यहां अनुमान लगा रहे हैं या आपने इसे आजमाया है? btw यह आपके HTML को गड़बड़ नहीं करना चाहिए। मैंने वेबवार्ता के साथ प्रयास किया है। यह व्यक्तिगत तत्वों को नहीं बल्कि पूरे दृश्य को स्थानांतरित कर रहा होगा।
डैनकोडी

1
मैं इसे करने की कोशिश की। मुझे लगता है कि ऐसा होता है क्योंकि मेरे सीएसएस में ज्यादातर प्रतिशत मूल्य हैं
राहुल डोले

@DanKodi मैंने कोशिश की adjustResize|stateHiddenऔर इससे कोई फर्क नहीं पड़ा adjustPan
इगोरगानापोलस्की

25

जो भी आप स्क्रॉल करना चाहते हैं, उसे लपेटने के लिए स्क्रॉल दृश्य जोड़ने का प्रयास क्यों न करें। यहां बताया गया है कि मैंने इसे कैसे किया है, जहां मैं वास्तव में शीर्ष पर एक हेडर छोड़ता हूं जो स्क्रॉल नहीं करता है, जबकि डायलॉग विजेट (विशेष रूप से एडिटेक्स) जब आप सॉफ्ट कीपैड खोलते हैं तो स्क्रॉल करते हैं।

<LinearLayout android:id="@+id/HeaderLayout" >
  <!-- Here add a header or whatever will not be scrolled. -->
</LinearLayout>
<ScrollView android:id="@+id/MainForm" >
  <!-- Here add your edittexts or whatever will scroll. -->
</ScrollView>

मैं आम तौर पर स्क्रॉलव्यू के अंदर एक LinearLayout होगा, लेकिन यह आपके ऊपर है। इसके अलावा, स्क्रॉलबार शैली को बाहर की ओर सेट करने में मदद करता है, कम से कम मेरे उपकरणों पर।


4
जबकि मायरा का जवाब है कि हर किसी को क्या करना चाहिए (और शायद Google ने सभी को क्या करना चाहिए), यह वही है जो मैं लगभग हर बार करता हूं। यह वास्तविक नियंत्रण प्राप्त करने का एकमात्र तरीका है जो प्रदर्शन को सही बनाने के लिए आवश्यक है। आह।
स्कॉट बिग्स

स्कॉट की टिप्पणी को कम मत समझिए। यह सत्य है। मेरे मामले में मैं अपनी सूची का आकार बदलना या पैन नहीं करना चाहता था, लेकिन उस सूची के अंत में editText को लेना चाहता था। इसलिए, मैंने EditText को स्क्रॉलव्यू में डाल दिया है और यह उम्मीद के मुताबिक काम करता है।
दरपन

15

आपको बस इतना करना है

android:isScrollContainer="true"

स्रोत: http://www.davidwparker.com/2011/08/25/android-fixing-window-resize-and-roll_ro/


1
जबकि उत्तर ने स्वयं मेरी बहुत मदद नहीं की (विशेषता की आवश्यकता नहीं थी), लिंक किए गए स्रोत में पूर्ण विवरण है (प्रपत्र को स्क्रॉल दृश्य में एम्बेड किया जाना चाहिए)। धन्यवाद!
जॉन्डोडो

इसी तरह, पृष्ठ पर कुछ भी मेरी मदद नहीं की, लेकिन लिंक ने दिखाया कि गतिविधि से जुड़े समायोजन को सक्रिय करें WindSoftInputMode और जो काम करता है।
स्टीवन स्मिथ

14

एक पुराने धागे को पुनर्जीवित करने के लिए क्षमा करें, लेकिन android:imeOptions="flagNoFullscreen"आपके EditText तत्व में किसी ने भी सेटिंग का उल्लेख नहीं किया है


7
android:windowSoftInputMode="adjustPan"
android:isScrollContainer="true"

Android EditText के लिए काम करता है, जबकि यह वेबव्यू या xwalkview के लिए काम नहीं करता है। जब सॉफ्ट कीबोर्ड वेबव्यू या आपके द्वारा उपयोग किए गए xwalkview में इनपुट छिपाते हैंandroid:windowSoftInputMode="adjustResize"


4

मेरा मानना ​​है कि आप इसे ट्रैकबॉल का उपयोग करके स्क्रॉल कर सकते हैं, जिसे अंततः चयन विधियों के माध्यम से प्रोग्रामेटिक रूप से प्राप्त किया जा सकता है, लेकिन यह सिर्फ एक विचार है। मुझे पता है कि ट्रैकबॉल विधि आमतौर पर काम करती है, लेकिन ऐसा करने के सटीक तरीके के लिए और इसे कोड से काम करने के लिए, मुझे यकीन नहीं है।
उम्मीद है की वो मदद करदे।


मुझे लगता है कि मुझे खिड़की को कृत्रिम रूप से "लंबा" बनाने के लिए एक रास्ता चाहिए ताकि दृश्य स्क्रॉल हो सके। वर्तमान में RelativeLayout एंड्रॉइड पर सेट है: लेआउट_ एक्सपोज़ = "रैप_ कॉन्टेंट" एंड्रॉइड: लेआउट_हाइट = "रैप_ कॉन्टेंट"
एलेक्सिस

मुझे तब समाधान का पता नहीं है। शायद आप अपनी आवश्यकताओं के अनुरूप चौड़ाई और ऊंचाई के मानों को मैन्युअल रूप से समायोजित करना चाहते हैं, उन्हें आगे बढ़ाकर जो "wra_content" को हल कर रहा है।
लुइस मिगुएल सेरानो

1

इस एकल पंक्ति को अपनी सापेक्ष गतिविधि में जोड़ें जहां कुंजी बोर्ड कवर को संपादित करें। गतिविधि के आधार पर () गतिविधि का तरीका।

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

0

मुझे पता है कि यह पुराना है, लेकिन उपरोक्त में से किसी भी समाधान ने मेरे लिए काम नहीं किया। व्यापक डिबगिंग के बाद, मुझे इस मुद्दे का पता चला। समाधान android:windowTranslucentStatusमेरी शैलियाँ .xml में झूठी विशेषता सेट कर रहा है


0

यदि EditText फ़ील्ड KeyBoard द्वारा कवर किया गया है, तो निम्न कोड का उपयोग करें:

    EditText= findViewById(R.id.edittext)
    EditText?.getParent()?.requestChildFocus(EditText,EditText)

अगर आप चाहते हैं कि कर्सर को फोकस एडिटटेक्स्ट में इस्तेमाल किया जाए तो इसके EditText.requestFocus()बाद EditText?.getParent()?.requestChildFocus(EditText,EditText) फोकस और कर्सर को फोकस एडिट टेक्स्ट में लाने में मदद मिलती है।


-1

अपना AndroidManifest.xml संपादित करें

android:windowSoftInputMode="adjustResize"

लेआउट फ़ाइल के अपने मूल दृश्य में इसे जोड़ें।

android:fitsSystemWindows="true"

बस इतना ही।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.