2010-04-28 12 views
7

से छिपा हुआ है मेरे पास एक एंड्रॉइड एप्लिकेशन है जो वेबव्यू के साथ टैबहोस्ट है। मैं इसे एक विशिष्ट HTML फ़ाइल लोड करने के लिए उपयोग करता हूं जिसमें उसके निचले हिस्से में टेक्स्ट फ़ील्ड होता है।एंड्रॉइड एप्लिकेशन में वेबव्यू में एचटीएमएल टेक्स्टफील्ड सॉफ्ट कीबोर्ड

जब मैं एचटीएमएल टेक्स्टफील्ड को स्पर्श करता हूं, तो सॉफ्ट कीबोर्ड पॉप अप होता है, और टेक्स्टफील्ड को छुपाता है, ताकि मैं नहीं देख पा रहा हूं कि मैंने क्या लिखा है।

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/main" 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
     <TabWidget 
      android:focusableInTouchMode="false" 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="63dp" /> 
     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 
     <LinearLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/layout" 
      android:orientation="vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" > 
       <WebView 
        android:id="@+id/webview" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_weight="1" /> 
      </LinearLayout> 
     </FrameLayout>  
    </LinearLayout> 
</TabHost> 

मुझे कोई सफलता के साथ android:windowSoftInputMode="adjustResize" साथ AndroidManifest.xml फ़ाइल को कॉन्फ़िगर करने की कोशिश की है:

यहाँ लेआउट है। मैंने के साथ अपने लेआउट में FrameLayout को बदलने का भी प्रयास किया है, लेकिन जब एप्लिकेशन चल रहा है तो अनिश्चित काल तक आकार में वृद्धि के लिए मेरे webview का कारण बन गया है .. यह पृष्ठ पर चल रहे कुछ जावास्क्रिप्ट के कारण हो सकता है।

मैंने देखा है कि एंड्रॉइड के वेब ब्राउज़र में निफ्टी व्यवहार है - एक वेब पेज में, सॉफ्ट कीबोर्ड पॉप अप होने के बाद, वेब पेज आसानी से स्क्रॉल करता है ताकि फोकस करने योग्य टेक्स्टफील्ड उपयोगकर्ता को दिखाई दे। मेरे आवेदन में इस तरह का व्यवहार कैसे हो सकता है?

+0

मुलायम कीबार्ड प्रकट होने पर इस समस्या को हल करने के लिए एक तरीका अधिसूचित किया जा सकता है, और उसके बाद मैन्युअल रूप से वेबदृश्य का आकार बदल सकता है। मैंने अपने सभी लेआउट कक्षाओं में क्रिएटइन इनपुट कनेक्शन (EditorInfo) को कार्यान्वित करने का प्रयास किया है, लेकिन कुंजीपटल दिखाई देने पर अधिसूचना नहीं मिल सका। सहायता! – gardenofwine

उत्तर

4

मुझे इस समस्या का समाधान मिला। (मैंने प्रश्न पोस्ट करने के लगभग एक सप्ताह बाद; मुझे केवल स्टैक ओवरफ्लो में जवाब देना पड़ा ...)

मेरे पास मेरे कोड में टुकड़े थे जो वेबव्यू की ऊंचाई बदलते थे (टैबबार के लिए कमरा रखने के लिए)। यह पता चला है कि जब आप WebView पर setLayoutParams का आह्वान करते हैं, तो आपके पास android:windowSoftInputMode="adjustResize" सेट होने पर भी इसकी ऊंचाई नहीं बदलेगी।

मैंने टैबबार को मुख्य.एक्सएमएल लेआउट फ़ाइल में 0 के प्रारंभिक आकार के साथ जोड़कर वेबव्यू की ऊंचाई को बदलने की आवश्यकता को बाधित कर दिया। जब मैं टैबबार के आकार को बढ़ाता हूं, तो वेबव्यू का आकार स्वचालित रूप से घटता है, और यह android:windowSoftInputMode="adjustResize" को संरक्षित करता है व्यवहार।

+0

पता है कि यह वेब व्यू का ज्ञात बग है या नहीं? बस एक ही समस्या में ठोकर खाई –

+0

मैंने इस मुद्दे के लिए दिन में एक बग दर्ज नहीं किया था। उसके बाद मैं एंड्रॉइड एपीआई संस्करण 1.6 पर काम कर रहा था, या 2.2 (मुझे याद नहीं है) – gardenofwine

+0

मेरे पास एक और जटिल लेआउट था, इसलिए एक फिक्स कठिन था, लेकिन अंत में मैंने वही किया जैसा आपने किया और घुमाया वेब सेट –

7

मुझे पागल कुछ भी नहीं मिल रहा था android:windowSoftInputMode="adjustResize" मदद कर सकता है लेकिन सुनिश्चित करें कि आपका ऐप पूर्ण स्क्रीन में न हो।

मेरे ऐप के लिए पूर्ण स्क्रीन को हटाने से सॉफ्टकीबोर्ड के साथ लेआउट आकार बदलने में समस्या हल हो गई।

<item name="android:windowFullscreen">false</item> 
+1

ध्यान दें कि 'adjustResize' काम नहीं करेगा अगर 'विंडोफुलस्क्रीन' को 'सत्य' –

+1

पर सेट किया गया है, मुझे पूरा यकीन है कि उसने यही कहा है। –