2016-04-14 9 views
1

私は現在epubsを読み、次のコードでAndroidのWebViewでそれらを表示するepublib-coreを使用しています -使用水平スクロール

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

しかし、私はHorizo​​ntalScrollをしたいのに対し、それがVertical Scrollを使用しています。 Webを検索した結果、Monocleが見つかりましたが、MonocleepublibWebViewに統合する方法がわかりません。どのように水平スクロールを使用するかについての任意のアイデアですか?

答えて

1

アトラス、私は(ページ遷移なしで)アプリで水平スクロールを有効にすることができます。水平方向にスクロールするために、このコードを使用する - 作成

カスタム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が統合され、ここでは全体のソースコードへのリンクです

- https://drive.google.com/drive/folders/0B8UizUpBrF1YX3UxcW5nLUVQMEk

+0

MyWebViewとは何ですか? – Redman

+0

私のカスタムWebViewは、元のWebViewとあまり変わりません。 – FadedCoder

+0

ありがとうございました:) – Redman

2

水平ページ番号を取得するには属性をhtmlに追加してからにロードしてください210

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);