2016-10-20 7 views
11

मैं अभी सामान्य समस्या पर काम कर रहा हूं कि कीबोर्ड दृश्य के बाहर ऐप को दबा रहा है।प्रतिक्रिया मूल: कुंजीपटल दिखाए जाने के बाद ऐप लेआउट अपडेट करें

एंड्रॉइड: windowSoftInputMode = "adjustResize" सेटिंग काम नहीं करती है।

अभी मैं इस तरह हाथ से कुंजीपटल के अनुसार दृश्य का आकार बदलने:

keyboardWillShow(e) { 
    setTimeout(()=> { 
     this.keyboardOffset = e.endCoordinates.height; 
    }, 500) 
} 

keyboardWillHide(e) { 
    this.keyboardOffset = 0; 
} 

///... 

const resultingHeight = windowHeight - this.keyboardOffset - Navigator.NavigationBar.Styles.General.TotalNavHeight; 

viewStyle = { 
    height: resultingHeight 
}; 

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

enter image description here

संपादित करें: इतने पर अन्य पदों क्योंकि adjustResize सेटिंग काम नहीं करता है और मैं प्रतिक्रिया देशी और नहीं देशी एंड्रॉयड का उपयोग मदद नहीं की।

+1

प्रदान कर सकता हूं यह डुप्लिकेट नहीं है। मैंने कोशिश की, और AndroidManifest में windowSoftInputMode में से कोई भी इसे हल नहीं किया। बस जब मैं एंड्रॉइड का उपयोग करता हूं: windowSoftInputMode = "एडजस्ट कुछ नहीं" दृश्य गायब नहीं होता है लेकिन फिर वही समस्या है जो कीबोर्ड टेक्स्ट इनपुट पर ओवरलैप करता है .... – BigPun86

+0

यदि आप उस दृश्य के लिए xml लेआउट पोस्ट कर सकते हैं तो मैं मदद करने की कोशिश कर सकता हूं , यदि आप इसका उपयोग कर रहे हैं (क्षमा करें, मुझे प्रतिक्रिया-मूल के बारे में कुछ भी पता नहीं है)। – Hugo

+0

'एंड्रॉइड के बारे में क्या: windowSoftInputMode =" adjustResize "', aaah। आप पहले से ही कोशिश की है। एक्सएमएल में आपके रूट लेआउट की तुलना में गलत विशेषताएं हैं। अगर आपके पास 'RelativeLayout', इस' <: layout_width = "match_parent" एंड्रॉयड: RelativeLayout एंड्रॉयड layout_height = "match_parent" एंड्रॉयड: fitsSystemWindows = "true" > सेट ' – longilong

उत्तर

3

यदि मुझे याद है, keyboardwillShow और keyboardWillHideare not fired on Android

यह व्यवहार एंड्रॉइड के मूल निवासी होना चाहिए, क्या आपने विंडो सॉफ़्टइनपुट मोड को निम्नानुसार स्थापित करने की कोशिश की है और घटनाओं को नहीं सुन रहा है?

android:windowSoftInputMode="adjustPan" 

है कि आप के लिए काम नहीं कर रहा है, तो आप एक बार देख KeyboardAvoidingView में नए 0.34 साथ ले सकता है,। ऐसा लगता है कि आप जो हासिल करने का प्रयास कर रहे हैं उसे हल कर रहे हैं।

वर्चुअल कीबोर्ड के रास्ते से बाहर निकलने के लिए विचारों की सामान्य समस्या को हल करने के लिए यह एक घटक है। यह कुंजीपटल की स्थिति के आधार पर स्वचालित रूप से अपनी स्थिति या नीचे पैडिंग समायोजित कर सकता है।

KeyboardAvoidingView Docs

+0

मैंने कीबोर्डAvoidingView की कोशिश की। यह लगभग एक कामकाजी समाधान है।मैंने windowSoftInputMode को हटा दिया और दृश्य के लिए व्यवहार "ऊंचाई" का उपयोग किया। केवल एक समस्या बाकी है। जब कीबोर्ड बंद होता है तो दृश्य अब इसके पूर्ण आकार में आकार बदलता नहीं है। –

+0

https://github.com/facebook/react-native/issues/10765#issuecomment-259109962 –

+0

क्या आप उस परिदृश्य के लिए 'कीबोर्डडिडक्लोस' का उपयोग कर सकते हैं और ऊंचाई को मैन्युअल रूप से बदल सकते हैं? –

0

KeyboardAvoidingView बदतर मेरी अपेक्षा से व्यवहार किया, तो मैं ScrollView कि सभी एप्लिकेशन लपेटकर है (ऊंचाई Dimensions की मदद से सेट किया गया है), तो किसी भी इनपुट क्लिक पर साथ अपने ही समाधान बनाया - निर्भर करता है, जहां है इनपुट (स्क्रीन के निचले/ऊपरी भाग - UIManager.measure और TextInputState.currentlyFocusedField की सहायता से) मैं दृश्य को स्क्रॉल करता हूं या नहीं - क्या यह आपके लिए काम करेगा? (छोटी ऊंचाई पर देखने का आकार कई मामलों में काम नहीं करेगा (अच्छा दिखता है) - मैं कुछ कोड

+0

मुख्य समस्या यह है कि पूरे ऐप को फिर दृश्यस्थान से बाहर धकेल दिया जाता है। यह टेक्स्टिनपूट पर स्क्रॉल करने की कोई समस्या नहीं है। –

+0

यह बहुत दिलचस्प है, क्या आप कृपया ऐसा कोड साझा कर सकते हैं जो आपने ऐसा करने के लिए किया था? – Noitidart

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