2016-10-05 8 views
8

के साथ एंड्रॉइड 7 वेबव्यू मेरे पास android:layout_height="wrap_content"ScrollView के अंदर WebView है। एंड्रॉइड 7 से पहले इस परिणामस्वरूप वेबव्यू स्थानीय HTML सामग्री की ऊंचाई पर आकार बदल रहा था जिसे मैंने loadData के साथ सेट किया था। हालांकि एंड्रॉइड 7 एक्स के साथ एंड्रॉइड 7 एक्स पर, वेबव्यू ऊंचाई अविश्वसनीय प्रतीत होती है, कभी-कभी यह केवल पहली टेक्स्ट लाइन के कुछ हिस्सों को दिखाती है, कभी-कभी सामग्री के अंत में एक बड़ा अंतर होता है।
मुझे लगता है कि यह अब Google के कारण होउगैट से शुरू होने वाले वेब व्यू के लिए क्रोम का उपयोग कर सकता है। क्या किसी के पास इस समस्या के लिए स्पष्टीकरण या फिक्स/वर्कअराउंड है?wrap_content

यह भी महत्वपूर्ण हो सकता है कि विचार RecyclerView की कोशिकाओं में निहित हैं।

+0

सामग्री दिखाने के लिए वेबव्यू का उपयोग करना थोड़ा जोखिम भरा –

उत्तर

1

रीसाइक्लिंग व्यू के अंदर सामग्री दिखाने के लिए वेबव्यू का उपयोग करना थोड़ा जोखिम भरा है और यह इतना कुशल नहीं है। आपको पता नहीं है कि यह विभिन्न उपकरणों में कैसे काम करता है!

मैं TextView का उपयोग कर और यह आदेश

textView.setText(Html.fromHtml(<YOUR HTML CONTENT>)) 

का उपयोग कर वैसे स्वरूपित पाठ करने के लिए HTML सामग्री को परिवर्तित करने के लिए अपने समाधान को बदलने के लिए सुझाव देते हैं, ये कुछ दिखाने के लिए एक फिक्स आकार को प्राप्त करने मैं WebView के साथ किया है कुछ प्रयास कर रहे हैं विज्ञापन बैनर सामग्री:

public class AdsWebView extends WebView { 

// some setup codes... 
private static final int MAX_SCALE = 120; 

public AdsWebView(Context context) { 
    setVerticalScrollBarEnabled(false); 
    setHorizontalScrollBarEnabled(false); 
    setScrollbarFadingEnabled(false); 

    setupAdsScale(); 
} 

private int getAdsScale() { 
    int width = getDisplayWidth(getContext()); 
    Double val = Double.valueOf(width)/Double.valueOf(480); 
    val = val * 100d; 
    return val.intValue(); 
} 


private void setupAdsScale() { 
    int scale = getAdsScale(); 

    if (scale > MAX_SCALE) 
     scale = MAX_SCALE; 

    setInitialScale(scale); 
} 

private int getDisplayWidth(Context context) { 
    try { 
     Activity activity = (Activity) context; 
     if (Integer.valueOf(android.os.Build.VERSION.SDK_INT) < 13) { 
      Display display = activity.getWindowManager() 
        .getDefaultDisplay(); 
      return display.getWidth(); 
     } else { 
      Display display = activity.getWindowManager() 
        .getDefaultDisplay(); 
      Point size = new Point(); 
      display.getSize(size); 
      return size.x; 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return 0; 
    } 
} 
+0

मुझे पहले से ही इस समाधान के बारे में पता था, लेकिन मुझे वास्तव में समृद्ध सामग्री का समर्थन करने की आवश्यकता है, इसलिए टेक्स्टव्यू की तुलना में अधिक टैग समर्थन करेंगे। लेकिन आपके समर्थन के लिए धन्यवाद! – Alf

1

समाधान नहीं है:

इंतजार कर html पृष्ठ लोड किया जाएगा, जबकि और पेज के अंदर जे एस चलाने सामग्री अजी पता लगाने के लिए टी और इसे WebView लेआउट पैरामीटर ऊंचाई पर सेट करें।

यह पेज अंदर जे एस चलाने बस के रूप में यहाँ वर्णित https://developer.android.com/guide/webapps/webview.html Android के लिए (बाइंडिंग JavaScript कैसा

javascript:Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight); 

यूआरएल के लिए जावा कोड के लिए परिणाम आप जावा जावा स्क्रिप्ट इंटरफेस प्रदान करनी चाहिए पास करने के लिए नेविगेट करने में आसान है कोड)

चाहिए नेविगेट करने के लिए आपका यूआरएल लगता है कि

javascript:myfunc(Math.max(document.body.scrollHeight,document.body.offsetHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight,document.documentElement.offsetHeight)); 

myfunc बुलाया जाएगा और आप पेज की ऊंचाई मिल जाएगा । अब बस वेबव्यू ऊंचाई पर ऊंचाई में सेट करें।

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