2012-07-02 21 views
56

मैंने अपनी समस्या के समाधान के लिए हर जगह खोज की है लेकिन मुझे कोई जवाब नहीं मिल रहा है। यहाँ समस्या है।संपादन टेक्स्ट पर क्लिक करते समय सामग्री को पुश करें

मैं एक लेआउट जब मैं पाठ संपादित करें (खोज पट्टी) में क्लिक करें कि इस

Image is here

तरह लग रहा है अब मैं चाहता है

Image is here

नरम होने के लिए निम्न कीबोर्ड को मूल रूप से पूरी स्क्रीन सामग्री को धक्का देने की आवश्यकता होती है ताकि खोज बार शीर्ष पर हो और इसकी सूचीदृश्य नीचे हो ताकि जब सामग्री की खोज की जाए तो परिणाम प्रदर्शित होते हैं। मैंने मेनिफेस्ट में पर android:windowSoftInputMode="adjustPan" सेट करने का प्रयास किया है लेकिन यह काम नहीं किया है। मैंने स्क्रॉल व्यू को मुख्य लेआउट में मुख्य कंटेनर के रूप में सेट किया है जिसमें टुकड़े हैं लेकिन यह भी काम नहीं करता है। मैंने सूची दृश्य में हेडर के रूप में संपादन टेक्स्ट (खोज बार) जोड़ने का प्रयास किया है लेकिन यह भी काम नहीं करता है। हर बार कीबोर्ड ने संपादन टेक्स्ट को धक्का दिया लेकिन सूची दृश्य को कवर किया। क्या यह काम करने का कोई तरीका है?

उत्तर

67
असल

यदि आप अपने पूरे लेआउट ऊपर पैन से आप का उपयोग करना चाहिए हैं:

SOFT_INPUT_ADJUST_PAN

अर्थ:

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

इस कीबोर्ड रखने के बंद और जब खोला धक्का जाएगा होगा अपने पूरी गतिविधि ऊपर।

+2

आप कमाल हैं! – Eenvincible

+0

लेकिन संपादन बॉक्स में पहले वर्ण दर्ज करते समय लेआउट ऊपर धक्का। – Nivedh

+4

'एडजपैन' ठीक काम कर रहा है लेकिन साथ ही, मैं अपने बटन भी चाहता हूं जो कीबोर्ड पर रखे जाने के लिए नीचे हैं (जिसे मूल रूप से 'एडजस्टराइज' का उपयोग करके हासिल किया जाता है लेकिन फिर यह पूरे लेआउट को ऊपर नहीं चलाता है आखिरकार टेक्स्टबॉक्स को छुपाता है जिसमें डेटा दर्ज किया जा रहा है। क्या कोई मदद कर सकता है? – driftking9987

7

अपनी मेनिफेस्ट फ़ाइल में android:windowSoftInputMode="adjustResize" आज़माएं।

आप मैं वास्तव में पर परीक्षण करने के लिए अपने स्थापना के लिए कुछ भी तुलनीय नहीं है android:windowSoftInputMode="adjustResize|adjustPan" करने के लिए आवश्यकता हो सकती है ... ...

आपकी समस्या इस की वजह से है (adjustPan के लिये दस्तावेज से, जोर मेरा) :

गतिविधि की मुख्य विंडो को नरम कीबोर्ड के लिए कमरे बनाने के लिए आकार में नहीं बदला गया है। बल्कि, विंडो की सामग्री स्वचालित रूप से ने उसे नकार दिया जाता है ताकि वर्तमान फोकस कुंजीपटल के कारण अस्पष्ट कभी नहीं जाता है और उन हमेशा देख सकते हैं कि वे क्या लिख ​​रहे हैं

यह देखते हुए कि, अपनी सूची क्योंकि छिप की जा रही है शीर्ष पर EditText फोकस है। एकमात्र चीज जो मैं वर्तमान में सोच सकता हूं वह है EditText को स्थानांतरित करना ताकि यह सूची से नीचे हो। फिर जब धक्का दिया जाता है, तो आपकी सूची अभी भी संपादन टेक्स्ट के ऊपर दिखाई देनी चाहिए।

+0

उत्तर के लिए धन्यवाद। मैंने कोशिश की है, काम नहीं किया। पुनः आकार का काम करता है लेकिन यह स्क्रीन के शीर्ष पर सामग्री को स्क्वायर करने का कारण बनता है और यह वास्तव में खराब दिखता है, जब समायोजन रीसाइज का उपयोग किया जाता है तो सूचीदृश्य सामग्री प्रदर्शित नहीं होती है। – Neil

+0

मेरा जवाब अपडेट किया गया, वास्तविक समाधान नहीं, बल्कि एक संभावित समाधान। – Barak

+0

हाय बराक मैंने सूचीदृश्य के नीचे संपादन टेक्स्ट को स्थानांतरित करने का प्रयास किया है लेकिन यह काम नहीं करता है। मैंने यह भी सोचा कि इसे चाहिए लेकिन यह सिर्फ सूची दृश्य पर संपादन टेक्स्ट को धक्का दे रहा है और सूचीदृश्य की सभी सामग्री को छुपाया है। – Neil

3

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

8

मुझे एक समान समस्या का सामना करना पड़ा, समाधान सरल था।

गतिविधि में विषय पूर्ण स्क्रीन @android:style/Theme.Holo.NoActionBar.FullScreen के रूप में सेट है, तो कीबोर्ड सामग्री धक्का नहीं दिया गया था।

बाद मैं @android:style/Theme.Holo.NoActionBar को गतिविधि बदल गया है, कीबोर्ड अब गतिविधि सामग्री को प्रेरित कर रहा है।

+0

दोस्त दोस्त! लेकिन क्या आप जानते हैं कि इसे पूर्णस्क्रीन पर कैसे सेट करें? –

+0

मैं भी पूर्णस्क्रीन चाहता हूं और यहां तक ​​कि गतिविधि सामग्री भी नहीं बढ़नी चाहिए। कोई भी समाधान? – Nikita

19

यह पाठ संपादित करें ऊपर और स्क्रॉल अंत तक ले जाने के लिए टुकड़ा कक्षा में इस्तेमाल किया जा सकता है।

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

यह सुनिश्चित करेगा कि आपकी फ्रैगमेंट गतिविधि थीम पूर्णस्क्रीन में नहीं है या नहीं।

आशा है कि इससे मदद मिलेगी!

+0

यह ठीक काम करता है, लेकिन संपादन बॉक्स में पहले अक्षर दर्ज करते समय लेआउट ऊपर धक्का। कैसे हल करें? अगर आपको – siva

+0

@ शिवा मुझे भी एक ही समस्या का सामना करना पड़ता है तो कृपया मुझे बताएं – Nivedh

+0

काम किया! बहुत बहुत धन्यवाद – dearvivekkumar

10

यह मेरे लिए काम किया। इस विधि के बारे

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 

कुछ नोट::

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

मैं अपने EditText लॉगिन करने के लिए इस का उपयोग

this संदर्भ के लिए बात कर रहा है, के रूप में getActivity() हमेशा बेहतर नहीं है

.SOFT_INPUT_STATE_HIDDEN //for default hidden state when activity loads 

.SOFT_INPUT_STATE_VISIBLE //for auto open keyboard when activity loads 

हर समय काम करता है!

9

इस

android:windowSoftInputMode="adjustResize" 

मेरे लिए काम कर की कोशिश करें।

3

यह मेरे लिए काम किया, टुकड़ा के लिए, बस इसे प्रकट में गतिविधि के साथ की घोषणा:

android:windowSoftInputMode="adjustPan" 

गुड लक!

+0

मेरे पास स्क्रॉलव्यू के अंदर कई स्क्रूव्यूव्यू और सापेक्ष लेआउट हैं जहां मेरे संपादन दृश्य हैं। यह निश्चित रूप से काम करता है। मैंने सोचा कि मुझे इसे हर संपादन में रखना होगा, यह पता चला है कि यह इतना आसान है, हे। ♥ –

0

किसी को अब भी इस मुद्दे का सामना करना पड़ रहा है, तो:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:id="@+id/view" 
    **android:fitsSystemWindows="true"** 
    android:layout_height="match_parent"> 

अपने लेआउट में जोड़ें:

android:fitsSystemWindows="true" 

मुझे आशा है कि यह आपकी समस्या का हल - यह मेरे लिए काम किया।

संबंधित मुद्दे

 संबंधित मुद्दे