2010-09-06 6 views
6

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

नोट: मैं, के रूप में यहाँ http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft वर्णित पता है कि गतिविधि संपत्ति android:windowSoftInputMode="adjustResize|adjustResize|adjustUnspecified" मौजूद हूँ, लेकिन मेरे मामले में यह कोई असर दिखाई नहीं देता। यह मेरी समस्या है:

मेरे पास दो गतिविधियां हैं, काफी समान लेआउट है, लेकिन पहला सूची दृश्य का उपयोग कर रहा है जिसमें बटन की सूची है। दूसरी गतिविधि बटन के साथ स्क्रॉलव्यू रखती है। बाकी है, अब एक ही है, बटन के एक ही नंबर, तत्वों का एक ही ऊंचाई, आदि

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

मेरे मैनिफेस्ट में, शुरुआत में मैंने android:windowSoftInputMode विशेषता निर्दिष्ट नहीं की थी, लेकिन यदि मैं करता हूं, तो इससे कोई फर्क नहीं पड़ता; मैंने सभी तीन मानों की कोशिश की (समायोजन करें, समायोजित करें, समायोजित करें, बिना किसी अंतर के समायोजित करें)। तो जब मैं View.INVISIBLE करने के लिए अपने लेआउट 1 (बाएं में मेरी ListView दृश्यता सेट),:

यह मेरा लेआउट है:

1) http://pastebin.com/5zzVxjbK

2) http://pastebin.com/KFtPuHvP

दिलचस्प बात यह है, हालांकि लेआउट ऊपर नहीं चला जाता है!

alt text

+0

@ माथीस लिन: मुझे लगता है कि आपको कुछ कोड पोस्ट करना होगा। बस 'सूचीदृश्य' और 'स्क्रॉलव्यू' कुछ भी नहीं करता है? मेरा अनुमान है कि यह लेआउट पर निर्भर करता है। – Praveen

+0

यहां कोड है, दोनों बटनों में 'बटन सेक्शन' का नाम एंड्रॉइड: id = "@ + id/category_questions" है; सुनिश्चित नहीं है कि यह प्रासंगिक हिस्सा है या नहीं। 1) http://pastebin.com/5zzVxjbK, 2) http://pastebin.com/KFtPuHvP –

+0

हां, मुझे यकीन है कि इसे लेआउट के साथ करना है, लेकिन कैसे? एंड्रॉइड डेवलपर दस्तावेज़ उस सम्मान में ज्यादा नहीं कहता है। –

उत्तर

0

मैं एक RelativeLayout साथ इस लक्ष्य को हासिल है और इसलिए तरह android:windowSoftInputMode="adjustPan" की स्थापना कर सकते हैं:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent" > 

    <include android:id="@+id/Header" layout="@layout/header" 
     android:layout_width="fill_parent" android:layout_height="wrap_content" /> 

    <ListView android:id="@+id/android:list" android:layout_width="fill_parent" 
     android:layout_height="wrap_content" android:layout_below="@id/Header" 
     android:layout_above="@+id/Footer" /> 

    <include android:id="@id/Footer" layout="@layout/footer" 
     android:layout_width="fill_parent" android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" /> 
</RelativeLayout> 

आप पाद लेख गुरुत्वाकर्षण (या layout_gravity) करने के लिए "नीचे" द्वारा इस हासिल कर सकता है , यदि आप LinearLayout रखना चाहते हैं, लेकिन मुझे यकीन नहीं है।

+0

मेरे पास अन्य गतिविधियां हैं (यानी एक सूची है जिसमें एक ऐप में एक टैब हेडर के लिए केवल एक छोटे से क्षेत्र के साथ स्क्रीन 90% भरती है) जहां बाहरी लेआउट एक रैखिक लेआउट है, और मुझे वहां प्रभाव का अनुभव नहीं होता है। मैं इसे केवल कुछ गतिविधियों में देखता हूं। मेरा मानना ​​है कि काम के ऊपर आपका लेआउट है, लेकिन मैं इसके पीछे तर्क समझना चाहता हूं, इसलिए मुझे पता है कि मैं मौजूदा लीनियरआउट और/या वास्तव में इस व्यवहार का कारण कैसे बदल सकता हूं। मुझे यकीन है कि कामकाज हैं, लेकिन मैं लक्षणों से लड़ना नहीं चाहता, बल्कि मूल ही। –

+0

क्या आपने पाद लेख की गुरुत्वाकर्षण (लेआउट_ग्रैविटी): "एडजस्ट" के साथ "नीचे" कोशिश की? –

+0

ऐसा लगता है कि सूची दृश्य "दृश्य में स्थानांतरित हो जाते हैं" जब तक कि वे स्क्रीन के निचले हिस्से तक लंगर न हों, और एड्रेसपैन का उपयोग करें। यह डिफ़ॉल्ट व्यवहार सूची आइटम को नरम कीबोर्ड द्वारा कवर करने से रोकता है। –

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

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