सॉफ्ट कीबोर्ड को एंड्रॉइड दिखाए जाने पर लेआउट को कैसे स्थानांतरित किया जाए


85

मेरे पास दो लॉगिन स्क्रीन है EditTextsऔर मेरे लेआउट में एक लॉगिन बटन है। समस्या यह है कि, जब मैं टाइप करना शुरू करता हूं, तो सॉफ्ट कीबोर्ड दिखाया जाता है और लॉगिन बटन को कवर करता है। जब यह दिखाई देता है तो मैं लेआउट को कीबोर्ड के ऊपर या ऊपर कैसे धकेल सकता हूं?

मैं एक का उपयोग नहीं करना चाहता ScrollView, बस इसे नीचे स्क्रॉल किए बिना लागू करना चाहता हूं। कृपया, मुझे इसे करने का कोई तरीका सुझाएं। अग्रिम में धन्यवाद।

जवाबों:


59

सेट windowSoftInputModeकरने के लिए संपत्ति adjustPanऔरadjustResize

<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>

32
यह बॉक्स से बाहर काम नहीं करता था, लेकिन <activity android:windowSoftInputMode="adjustResize"></activity>इसे काम करने के लिए बदल दिया ।
निकियाकोसिस

2
उल्लेख करें कि आप किस Android संस्करण का उपयोग कर रहे हैं। कुछ उत्तर कुछ संस्करणों पर पूरी तरह से बेकार हो सकते हैं।
जोश

जैसा कि @nickiaconis ने कहा, मुझे 'एडजस्टमेंट' पैरामीटर की आवश्यकता नहीं है और यह मेरे लिए काम करता है, धन्यवाद
danisupr4

वहाँ Xamarin.Forms पोर्टेबल परियोजना के लिए एक बराबर उपलब्ध है? इसलिए मुझे प्रत्येक व्यक्तिगत लक्ष्य मंच के लिए ऐसा करने की आवश्यकता नहीं है।
user20358

6
सेटिंग को निम्न तालिका में सूचीबद्ध मानों में से एक होना चाहिए, या एक "राज्य ..." मान प्लस एक "समायोजित ..." मान का एक संयोजन होना चाहिए। समूह में कई मान सेट करना - कई "स्थिति ..." मान, उदाहरण के लिए - अपरिभाषित परिणाम हैं। डेवलपर
.android.com

34

गतिविधि के अनुरूप Android मेनिफ़ेस्ट फ़ाइल में इसे आज़माएँ।

<activity android:windowSoftInputMode="adjustPan"> </activity>

1
मेरा लॉयआउट पहली बार ऊपर चला गया, लेकिन जब कीबोर्ड बंद हुआ और फिर से खुला, तो नहीं चला।
नाबघे

24

इस कोड को onCreate()विधि में उपयोग करें :

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

1
धन्यवाद, इससे मदद मिली। <गतिविधि एंड्रॉइड: windowSoftInputMode = "समायोजनपैन"> </ गतिविधि> किसी कारण से मेरे लिए काम नहीं किया।
डीएच 28

1
इस विधि है, लेकिन उपयोग SOFT_INPUT_ADJUST_RESIZEADJUST_PAN के बजाय, मेरे लिए काम किया
Voy

16

केवल

android:windowSoftInputMode="adjustResize"

मेनिफेस्ट फ़ाइल के अंदर आपकी गतिविधि टैग में चाल चलेगी


मैं कांस्ट्रेन्डलैट का उपयोग कर रहा हूं, यह समाधान मेरे लिए काम नहीं करता है।
करण शर्मा

इस उत्तर को लिखने के समय, Android लेआउट में कॉन्ट्राट्राइनलआउट को जोड़ा नहीं गया था। आप कृपया इस धागे पर कोई अन्य उपाय खोजें जो आपको सबसे अच्छा लगे। और निश्चित रूप से मैं समय मिलते ही अपना जवाब कॉन्स्ट्रेण्टलैटआउट के लिए अपडेट करूंगा। रिपोर्टिंग के लिए धन्यवाद
भार्गव थांकी


10

मैंने किसी तरह डिवाइस पर सॉफ्ट कीबोर्ड की स्थिति जानकर इसे हासिल किया। जब कीबोर्ड दिखाया जाता है तो मैं लेआउट को y स्थिति में ले जाता हूं और जब दिखाया नहीं जाता है तो अपनी मूल स्थिति में वापस चला जाता है। यह ठीक काम करता है, इस दिशा निर्देशों का पालन किया।


2
जब कीबोर्ड दिखाता है तो मैं लेआउट को स्थानांतरित करने में सक्षम हूं, लेकिन जब की बोर्ड छुपाता है, तो अपनी मूल स्थिति में स्थानांतरित करने में असमर्थ, आप इसमें मेरी मदद कर सकते हैं।
किशोर

9
android:fitsSystemWindows="true"

लेआउट फ़ाइल के मुख्य लेआउट पर संपत्ति जोड़ें और

android:windowSoftInputMode="adjustResize"

अपनी सक्रियता पर अपनी Manifest.xml फ़ाइल में लाइन जोड़ें

मेरे लिए यह सही काम है।


FitSystemWindows का कीबोर्ड से कोई लेना-देना नहीं है
Tim

@TimCastelijns, मेरे मामले (फुलस्क्रीन गतिविधि) में यह मायने रखता है। यदि सेट किया जाता है false, तो दृश्य ऊपर नहीं जाएंगे।
कूलमैन्ड

6

इसे अपनी गतिविधि घोषणा पत्र में प्रकट फ़ाइल में डालें <activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>

या यदि आप चाहें तो आप अपनी गतिविधि के ऑनक्रिएट () विधि में जोड़ सकते हैं

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

1
मैनिफ़ेस्ट कोड गलत है, इस तरह से व्यवहार अपरिभाषित है (आप दो संघर्ष मान सेट करते हैं, ऑफडॉक देखें: developer.android.com/guide/topics/manifest/… , android:windowSoftInputModedescription)। @ kiwicomb123, एक पैरामीटर चुनें या सिस्टम आपके लिए चुनेगा (और यह विकल्प किसी अन्य डिवाइस / एपीआई
फैसले

3

यह वह सब है जिसकी आवश्यकता है:

<activity android:windowSoftInputMode="adjustResize"> </activity>

2

इस गाइड के लिए , इसको प्राप्त करने का सही तरीका आपके घोषणा पत्र में घोषित करके है:

<activity name="EditContactActivity"
        android:windowSoftInputMode="stateVisible|adjustResize">

    </activity>

ऐसा लगता है कि राज्यविस्तृत इसे गतिविधि शुरू होने पर खोलने का कारण बनेगा, इसलिए यह वास्तव में कीबोर्ड को पुश करने के लिए आवश्यक नहीं है।
कोडिएन्गेल

2

जब सॉफ्टकबोर्ड दिखाई देता है, तो यह मुख्य लेआउट के आकार को बदल देता है, और आपको जो कुछ भी करने की आवश्यकता होती है, वह मुख्य मेन्यू के लिए एक श्रोता बनाना है और उस श्रोता के भीतर, scrollT0(x,y)स्क्रॉल करने के लिए कोड जोड़ें ।


2

यदि आप xamarin के साथ काम कर रहे हैं, तो आप इस कोड WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResizeको MainActivity class की गतिविधि विशेषता में रख सकते हैं । उदाहरण के लिए, अब गतिविधि विशेषता नीचे की तरह दिखाई देगी

    [Activity(WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResize)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
    {
        //some code here.
    }

0

सापेक्ष लेआउट का उपयोग करें यह दृश्य को समायोजित करेगा ताकि आप पाठ लिखते समय उस दृश्य को देख सकें


0

यह मेरे लिए एक आकर्षण की तरह काम करता है

getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

0

आपको उपयोग करना चाहिए

android:windowSoftInputMode="adjustPan|stateHidden"

अपनी AndroidManifest.xmlफ़ाइल में जहाँ आप अपनी गतिविधि घोषित कर रहे हैं। यह आपकी लेआउट सामग्री को समायोजित करेगा, जब लेआउट में कीबोर्ड दिखाया जाएगा।


-2

यह निश्चित रूप से आपके लिए काम करेगा।

एंड्रॉयड: windowSoftInputMode = "adjustPan"


1
क्या आप कुछ स्पष्टीकरण जोड़ सकते हैं ...?
chevybow

बस अपने AndroidManifest.xml फ़ाइल पर जाएँ और उस गतिविधि के लिए यह टैग जिसे आप कीबोर्ड पॉप अप पर स्क्रॉल करना चाहते हैं
sanjay kumar
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.