1

我目前正在使用以下代码epublib-core阅读 epub 并在 Android 中显示它们-WebView

webView.loadDataWithBaseURL(baseURL, new String(spineReferences.get(chapter/* <- int*/).getResource().getData()), "text/html", "utf-8", null);

但它正在使用Vertical Scroll,而我想要一个 Horizo​​ntalScroll。在网上搜索后,我找到了Monocle,但我不知道如何Monocleepubliband集成WebView。关于如何使用水平滚动的任何想法?

4

2 回答 2

3

Atlast,我可以在应用程序中启用水平滚动(没有任何页面转换)。使用此代码水平滚动 -

创建自定义WebViewClient-

public class CustomWebClient extends WebViewClient {
private Context mContext;

public CustomWebClient(Context context) {
    this.mContext = context;
}

@Override
public void onPageFinished(WebView view, String url) {
    super.onPageFinished(view, url);

    final MyWebView myWebView = (MyWebView) view;

    String varMySheet = "var mySheet = document.styleSheets[0];";

    String addCSSRule = "function addCSSRule(selector, newRule) {"
            + "ruleIndex = mySheet.cssRules.length;"
            + "mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);"

            + "}";

    String insertRule1 = "addCSSRule('html', 'padding: 0px; height: "
            + (myWebView.getMeasuredHeight() /  mContext.getResources().getDisplayMetrics().density)
            + "px; -webkit-column-gap: 0px; -webkit-column-width: "
            + myWebView.getMeasuredWidth() + "px;')";

    myWebView.loadUrl("javascript:" + varMySheet);
    myWebView.loadUrl("javascript:" + addCSSRule);
    myWebView.loadUrl("javascript:" + insertRule1);

}
}

编辑 -

我将 epub lib 与 Monocle 集成以获得很好的效果,这里是整个源代码的链接 - https://drive.google.com/drive/folders/0B8UizUpBrF1YX3UxcW5nLUVQMEk

于 2016-04-14T15:58:48.693 回答
2

要在加载到之前获取水平分页添加css属性htmlWebView

String html = getBookContent();  // load epub content to String

int density = getResources().getDisplayMetrics().density;
int width = (int) Math.floor(mWebView.getWidth() / density);
int height = (int) Math.floor(mWebView.getHeight() / density);

String style= "<meta name=\"viewport\" content=\"width=device-width, height=device-height, initial-scale=1\"/>\n" +
     "<style type=\"text/css\">body {height: %heightpx; \n" + 
     "-webkit-column-width: %widthpx; -webkit-column-gap:0;}</style></head>";

html = html.replace("</head>", style);
html = html.replace("%width", String.valueOf(width));
html = html.replace("%height", String.valueOf(height));

 mWebView.loadDataWithBaseURL(baseUrl, html, "text/html", "utf-8", null);
于 2017-12-03T17:18:23.947 回答