android - 在 Android WebView 中使用水平滚动

标签 android webview epublib monocle

我目前正在使用 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 ,但我不知道如何将 MonocleepublibWebView 集成。关于如何使用水平滚动有任何想法吗?

最佳答案

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

创建自定义 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

关于android - 在 Android WebView 中使用水平滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36617345/

相关文章:

android - 从 XML 布局扩展 ViewPager

Android 设备需要连接到服务器 - C2DM、轮询或第三方?

java - 如何处理从未发生的、无用的异常?

java - 如何显示最近打开的文件列表?

android - 什么时候应该在我的游戏中缩放位图

webview - 在 Android TV 上升级 Android WebView 后,不再播放 hls 264 视频

iphone - PhoneGap 为 iPhone 捕获 'Go' 按下事件

android - 使用 weinre 在 Android 应用程序中调试网页 - 找不到调试目标

android - 将 epublib 添加到 Android Studio 并运行它