2012-04-09 12 views
11

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

यह मुझे चिंतित करता है क्योंकि मेरे पास नीचे टूलबार है जो position:absolute; bottom:0; है और कुंजीपटल दिखाए जाने पर यह टूलबार एंड्रॉइड में धक्का दिया जाता है। आईओएस में, कीबोर्ड बस इसे ओवरले करता है।

उत्तर

26

को

<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi" /> 

जोड़े अपने मुख्य गतिविधि पर AndroidManifest.xml में निम्नलिखित जोड़ें:

android:windowSoftInputMode="adjustPan" 

और

android:configChanges="orientation|keyboardHidden" 

मेंजोड़ने क्या कहा traumalles:

<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi" /> 
+2

के लिए com.phonegap.DroidGap पर पैकेज नाम बदलें, यह संभव नहीं होगा कि कीबोर्ड इनपुट बॉक्स को कवर करे। वहां से, उपयोगकर्ता नहीं देख पाएगा कि वे क्या टाइप कर रहे हैं। – darewreck

+0

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

0

अपने सिर टैग

+9

यह काम नहीं करता है। – AlexCheuk

+0

क्या आपने AndroidManifest.xml में दूसरा गतिविधि टैग जोड़ा था? <गतिविधि एंड्रॉयड: नाम = "org.apache.cordova.DroidGap" एंड्रॉयड: लेबल = "@ स्ट्रिंग/app_name" एंड्रॉयड: configChanges = "उन्मुखीकरण | keyboardHidden"> <आशय फिल्टर> इस रूट पर जाकर फोनगैप 1.4.x और पहले – allesmi

0

Eu Vid's answer पर शीर्ष करने के लिए, मैं करते रहे कि Cordova 6.4.0 और ऊपर <edit-config /> जो हम AndroidManifest.xml संशोधित करने के लिए उपयोग कर सकते हैं के लिए समर्थन हासिल है कामना करते हैं।

सबसे पहले आपको एंड्रॉइड नेमस्पेस विशेषता जोड़ने की आवश्यकता होगी। अपने config.xml में, एक नई विशेषता xmlns:android="http://schemas.android.com/apk/res/android"<widget /> जोड़ें। आपका विजेट ब्लॉक कुछ इस तरह दिखना चाहिए:

<widget 
    id="com.my.app" 
    version="0.0.1" 
    xmlns="http://www.w3.org/ns/widgets" 
    xmlns:cdv="http://cordova.apache.org/ns/1.0" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

अब निम्नलिखित कोड अंदर <widget /> जोड़ें:

<edit-config file="AndroidManifest.xml" mode="merge" target="/manifest/application/activity"> 
    <activity android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="adjustPan" /> 
</edit-config> 

अब जब आप cordova platform add android फोन, AndroidManifest.xml उपरोक्त रूपरेखाओं के साथ उत्पन्न हो जाएगा।

नोट:

  • ऊपर कोड <activity> ब्लॉक अधिलेखित नहीं करता है, लेकिन इसके साथ विलीन हो जाती है; यह केवल निर्दिष्ट एक्सएमएल विशेषताओं को प्रतिस्थापित करेगा।
  • यदि आप पहले से ही cordova platform add android कहलाते हैं, तो आप इसे फिर से जोड़ने से पहले cordova platform rm android दर्ज करके इसे हटा सकते हैं।