2013-08-19 4 views
6

मैं फ़ायरफ़ॉक्स ओएस के लिए एक वेब अनुप्रयोग विकसित किया है, लेकिन मैं इसे चलाने के "मूल रूप से" एंड्रॉयड में बनाना चाहते थे। मेरे एप्लिकेशन में एक संवाद बॉक्स होता है जो div होता है जो दृश्यमान होने पर पूरे पृष्ठ को भरता है, जिसे मैंने फ़ायरफ़ॉक्स उत्तरदायी डिज़ाइन टूल का उपयोग करके परीक्षण किया है और यह सही ढंग से आकार बदलता है। जब एक मुलायम कीबोर्ड दिखाई देता है, तो मैं वार्तालाप को आकार में बदलना चाहता हूं क्योंकि वार्तालाप के नीचे कुछ बटन हैं।WebView का आकार परिवर्तन नहीं करता है

मैं एक ही गतिविधि है कि सिर्फ एक WebView शामिल साथ एक आवेदन बनाया। मैं दृश्य जब कीबोर्ड दिखाई आकार बदलने के लिए करना चाहता था, इसलिए मैं प्रयोग किया है:

android:windowSoftInputMode="stateUnspecified|adjustResize" 

जो नहीं मालूम था WebView को कोई फर्क करने के लिए जब कुंजीपटल दिखाई दे रही थी। मैं ऑनलाइन देखा और वहाँ बहुत से लोगों को इस समस्या के बारे में शिकायत कर रहे थे, लेकिन वे सभी आम में एक ही बात थी, वे Theme.Black.NoTitleBar.Fullscreen विषय है, जो मैं नहीं कर रहा हूँ उपयोग कर रहे थे। मैंने उस समस्या के सभी समाधानों की कोशिश की, लेकिन उनमें से कोई भी काम नहीं किया।

मैं तो अगर वहाँ WebView में एक बग जिसका मतलब था उसे पुनः आकार नहीं था आश्चर्य करने लगे। इसलिए, मैंने एक कस्टम View लिखा जिसने onLayout में आयाम मुद्रित किए।

@Override 
protected void onLayout(boolean changed, int l, int t, int r, int b) { 
    Log.d(TAG, t + " " + r + " " + b + " " + l); 
} 

और यकीन है कि पर्याप्त, दृश्य सही ढंग से आकार दिया जा रहा था जब कुंजीपटल दिखाई दिया और disappared। इसलिए, मैंने कुछ और शोध किए और मुझे कुछ जवाब मिले जो कहा कि आपको WebView को छिपाने की जरूरत है, इसे पुनः लोड करें, और फिर इसे फिर से दिखाएं।

@Override 
protected void onLayout(boolean changed, int l, int t, int r, int b) { 
    Log.d(TAG, t + " " + r + " " + b + " " + l); 

    mWebView.setVisibility(View.GONE); 
    mWebView.layout(l, t, r, b); 
    mWebView.invalidate(); 
    mWebView.reload(); 
    mWebView.setVisibility(View.VISIBLE); 
} 

फिर से, यह मेरी समस्या का समाधान नहीं किया। (और एक साइड प्वाइंट के रूप में, यह एक .html फ़ाइल वाला एक वेब-ऐप है और जेएस एप में सभी तत्वों की स्थिति रनटाइम में बदलने का कारण बनता है, इसलिए इसे पुनः लोड करना एक विकल्प नहीं है।)

मेरा सवाल यह है कि जब कीबोर्ड दिखाई देता है तो सामग्री को लोड होने के बाद WebView का आकार बदलने का कोई तरीका जानता है।

+0

मैंने पहले इस मुद्दे था कभी नहीं किया है। मेरा वेबव्यू और इसकी सामग्री, हमेशा ठीक से आकार बदलती है। आप किस डिवाइस के साथ परीक्षण कर रहे हैं? इसके अलावा, मैं "stateHidden | adjustResize" का उपयोग करता हूं –

+0

वाह ... आप सही हैं! मैंने एक 'निश्चित' स्थानांतरित div के साथ एक खाली HTML पृष्ठ बनाया और यह अपेक्षित के रूप में आकार बदल गया। समस्या यह थी कि मुझे वेबकिट में एक बग के कारण 'स्थिति: पूर्ण;' का उपयोग करना है जो 'निश्चित' तत्वों को किसी भी '-webkit-transform' पर प्रतिक्रिया नहीं देता है, इसलिए मुझे एक और तरीका खोजना होगा। –

+0

मदद करने के लिए खुशी हुई।आम तौर पर मैंने वेबव्यू का उपयोग बहुत छोटी गाड़ी (विशेष रूप से उपकरणों के बीच) का उपयोग किया और उन्हें हर कीमत पर उपयोग करने से बचने में मदद मिलेगी। –

उत्तर

2

समस्या यह साबित हुई कि मैं position: absoluteposition: fixeddiv के अंदर उपयोग कर रहा था। बाहरी div ठीक से आकार बदल रहा था, लेकिन आंतरिक एक नहीं था। मुझे position: absolute का उपयोग करने का कारण था क्योंकि वेबकिट में एक बग है जिसका अर्थ है कि आप transformfixed स्थानांतरित divs नहीं कर सकते हैं।

4

यही आपके सवाल का जवाब नहीं है, लेकिन आप यह भी कहा कि WebView देखेंगे करता है फिर से आकार जब यह बड़ा हो रही है के बारे में है, लेकिन जैसा कि मैं पहले से ही इस प्रश्न पर जवाब दे दिया है कम नहीं होता सामग्री की ऊंचाई कम हो जाती है,: WebView height = wrap_content with changing font size doesn't work

बग/सुविधा गूगल की समस्या ट्रैकर पर संदर्भित है: https://code.google.com/p/android/issues/detail?id=18726

कृपया मुझे दोष मत देना, मैं सिर्फ बात करने के लिए है कि आगे की समस्याओं आप WebView साथ मुठभेड़ सकता है के लिए करना चाहता था।

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