带有wrap_content的Android 7 WebView

Mic*_*cky 10 html android google-chrome scrollview webview

我有一个WebViewandroid:layout_height="wrap_content"里面ScrollView.在Android 7之前,这导致WebView调整到我设置的本地html内容的高度loadData.在我的带有Android 7的Nexus 5X上,WebView高度似乎不可靠,有时它只显示第一个文本行的部分,有时在内容的末尾有很大的差距.
我认为这可能是因为谷歌现在使用Chrome开始使用Chrome浏览器从Nougat开始.有没有人对此问题有解释或修复/解决方法?

将视图包含在a的单元格中也可能很重要RecyclerView.

Moh*_*ini 1

使用WebView来显示RecyclerView中的内容有点冒险,而且效率不高。您不知道它在不同设备上的工作原理!

我建议使用 TextView 更改您的解决方案,并使用此命令将 HTML 内容转换为格式化文本

textView.setText(Html.fromHtml(<YOUR HTML CONTENT>))
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这些是我使用 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我已经知道这个解决方案,但实际上我需要支持丰富的内容,因此比 TextView 支持的标签更多。但感谢您的支持! (2认同)