2

私はJavaでAndroidアプリケーションを書いています。これは、基本的にプライベートフォーラムのフォーラムリーダーとして機能します。アプリはスレッドのリストを表示し、ユーザーがスレッドを選択すると、基本的に単一のWebViewで構成される新しいアクティビティが開きます。アプリはフォーラムスレッドのソース(html)をダウンロードして解析し、必要な情報(作成者、htmlとしてのコンテンツなど)のみを含む「投稿」アイテムのリストを返します。最後に、投稿のリストからHTMLを作成し、WebViewに表示します。

これは完全に正常に機能していますが、画像に問題があります。画像が非常に大きく、ユーザーが画像全体を表示するには、水平方向と垂直方向の両方にスクロールする必要がある場合があります。これらの画像のサイズをWebViewの幅に合わせて(常に完全に表示されるように)、オプションでフルサイズの画像を開くハイパーリンクに変換したいと思います。

スレッドHTMLを自分で解析しているので、理論的には各imgタグを取得して、それに「width = 100%」属性を追加できます。問題は、小さな画像(絵文字など)もサイズ変更され、非常に大きく膨らむことです。デバイスに表示するには大きすぎる画像のサイズを変更したいだけです。

どうすればこれを達成できますか?もちろん、私が考えることができるいくつかの方法(ただし、目的の解決策に完全に到達するわけではありません)は次のとおりです。

  • WebViewに表示する前に投稿コンテンツのHTMLを変更し、
  • WebViewが投稿コンテンツの表示に使用するCSSスタイルシートの変更
  • WebViewソースへのJavaScriptの追加

基本的に、私はHTML、CSS、およびJavascriptに完全にアクセスできますが、それでも大きすぎる画像のサイズを変更する方法を理解できません(ただし、大きすぎない画像はわかりません)。

このWebViewではズームが無効になっているため、ズームは問題になりません。

誰かがこの効果を達成する方法を知っていますか?ありがとう!

4

1 に答える 1

2

HTML ファイル内でビュー ポートを設定しようとしましたか?

以下に、それを実現する方法の例を示します。高密度、中密度、および低密度のデバイスでは、最小スケール、最大スケールなどのパラメーターを設定できます。

function setViewPort() {
    var viewport = document.querySelector("meta[name=viewport]");

    //high-density screen
    if (window.devicePixelRatio == 1.5) {
        viewport.setAttribute("content", "target-densitydpi=high-dpi, width=device-width, height=device-height, initial-scale=1.15, minimum-scale=1.15, maximum-scale=1.8" );
    }
    //medium-density screen
    else if (window.devicePixelRatio == 1.00) {
        viewport.setAttribute("content", "target-densitydpi=low-dpi, width=device-width, height=device-height, initial-scale=1.3, minimum-scale=1.3, maximum-scale=1.3");
    }
    //low-density screen
    else if (window.devicePixelRatio == 0.75) {
        viewport.setAttribute("content", "target-densitydpi=device-dpi, width=device-width, height=device-height, maximum-scale=1.3");
    }}

Android Doc Targeting Screens from WebAppsも確認してください。

于 2012-11-21T00:32:12.480 に答える