2010-06-04 6 views
10

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

अब, जब मैं वर्चुअल कीबोर्ड खोलने के लिए EditText पर टैप करता हूं तो SurfaceView स्लाइड करता है लेकिन EditText छुपा हुआ है और टाइप की गई स्ट्रिंग नहीं दिखाता है।

पुन: पेश करने के लिए निम्न लेआउट XML कोड का उपयोग करें:

<?xml version="1.0" encoding="utf-8"?> 

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

<SurfaceView 
android:id="@+id/SurfaceView01" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"> 
</SurfaceView> 

<EditText 
android:id="@+id/EditText01" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:layout_alignParentLeft="true" 
android:layout_alignParentBottom="true" 
android:selectAllOnFocus="true" 
android:textStyle="normal" 
android:singleLine="true"> 
</EditText> 

</RelativeLayout> 

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

हो सकता है कि रिलेटिवलाइट समस्याएं पैदा कर रहा है, लेकिन मुझे नहीं पता कि एक ही लेआउट क्लास के साथ एक ही लेआउट को पुन: पेश करना है।

कोई सुझाव स्वागत है, मैं वास्तव में आपकी मदद की सराहना करता हूं।

धन्यवाद।

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

यहाँ दो स्क्रीनशॉट, एक वर्चुअल कीबोर्ड के बिना तल पर EditText दिखा आभासी कीबोर्ड के साथ है, लेकिन कोई EditText साथ एक हैं। यह ध्यान रखना दिलचस्प है कि SurfaceView और EditText वास्तव में ऊपर की ओर बढ़ते हैं, संपादन टेक्स्ट अभी गायब हो जाता है। बीटीडब्लू यह बटन के साथ भी होता है अगर यह एडिटटेक्स्ट के बगल में है।

EditText below a SurfaceView (left); EditText is gone (right)

+0

आप स्क्रीनशॉट की एक जोड़ी को जोड़ने पर विचार कर सकते हैं, एक मुलायम कीबोर्ड छुपा हुआ (यानी, "सामान्य") और कीबोर्ड को लाने के लिए 'EditText' टैप करने के बाद एक। आप स्क्रीनशॉट बनाने के लिए डीडीएमएस का उपयोग कर सकते हैं। – CommonsWare

+1

यह बग रिपोर्ट किया गया है: http://code.google.com/p/android/issues/detail?आईडी = 11676 – Jan

उत्तर

8

रूप thread about this bug में एक टिप्पणीकार का सुझाव दिया है, यह रूप में अच्छी तरह mSurfaceView.setBackgroundColor(Color.TRANSPARENT); के साथ पारदर्शी करने के लिए SurfaceView या GLSurfaceView की पृष्ठभूमि का रंग निर्धारित करके इस समस्या को दूर करने के लिए बहुत आसान है।

सैमसंग गैलेक्सी टैब 10.1 पर हनीकॉम (v13) पर EditText दबाते समय यह समस्या मेरे लिए आई। मुद्दा यह था कि GLSurfaceView के आकार के बाद, इसकी जगह अभी भी एक काला आयताकार था जो EditText को कवर कर रहा था। यह समाधान उस गलत आयताकार पारदर्शी बनाकर काम करता है, इसलिए EditText देखा जा सकता है।

+2

बहुत बहुत धन्यवाद, मेरी इच्छा है कि मैं +100 कर सकता हूं! –

1

अपने AndroidManifest.xml android:windowSoftInputMode="adjustPan"

0

हाँ में अपनी गतिविधि के लिए अनुवर्ती कोड जोड़ें, यह सही है! अपने AndroidManifest.xml android:windowSoftInputMode="adjustPan"

में और अपने पाठ को संपादित में अपनी गतिविधि के लिए अनुवर्ती कोड जोड़ें, बस जोड़ें:

android:imeOptions="flagNoFullscreen" 
0

मैंने पाया यह विभिन्न डिवाइस पर अलग परिणाम है, तो मैं के रूप में scrollview का उपयोग रूट दृश्य और लेआउट को स्क्रॉलव्यू में डाल दें, पूर्णस्क्रीन मोड का उपयोग करते समय यह ठीक काम करता है। और एंड्रॉइड सेट करना सुनिश्चित करें: fillViewport = "true" अगर आपको अभी भी कुछ समस्या है तो मुझे बताएं [email protected]

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