【问题标题】:Android center and adjust image in webviewAndroid中心并在webview中调整图像
【发布时间】:2013-05-28 11:13:28
【问题描述】:

我最近一直在编写一个基本的网络漫画应用程序,并且在 webview 如何显示漫画方面遇到了问题。图像本身加载良好,但是图像上方或侧面总是有多余的空白,图像始终位于 web 视图的左上角。此外,通常 webview 会在一定程度上放大图像,这是一个问题,因为漫画的尺寸不同。

我希望加载图像以使其居中,根据高度或宽度(以适当者为准)进行调整,以便整个图像可见,并尽可能消除空白。不幸的是,我无法提供问题的任何屏幕截图,因为无论出于何种原因,任何模拟器都无法运行该应用程序。

就代码而言,我只有以下内容:

    <WebView
    android:id="@+id/webView1"
    android:layout_width="wrap_content"
    android:layout_height="300dp"
    android:layout_below="@+id/textView1"
    android:layout_gravity="center"
    android:layout_centerHorizontal="true" />

在类中,我的代码是这样的,图像是一个字符串,其中包含我从页面的 HTML 中提取的图像 URL:

        WebView myWebView = (WebView) findViewById(R.id.webView1);
    myWebView.loadUrl(image);

【问题讨论】:

  • 你试过android:gravity="center" 吗?将实际内容设置为居中而不是布局内的元素
  • 我只是试了一下,但实际上并没有改变图像的显示方式。

标签: android android-webview


【解决方案1】:

尝试设置android:layout_height="wrap_content"

关于空格问题,请尝试查看This Link

【讨论】:

  • 我最初将高度设置为该值,但问题是漫画的高度各不相同,因此控件也各不相同。一些图像非常大,并导致控件被放置使得用户无法触及它们。这就是为什么我想让 webview 具有定义的大小并相应地调整图像。我正在阅读其他一些帖子,想知道是否尝试使用 imageview 而不是 webview 可能是一种灵魂……但是您提供的链接确实解决了空白问题!
  • 在我看来,这可能是一个更好的解决方案,因为当前的 webView 有几个错误,比如空白问题。它可能有点复杂,但使用 ImageView 可以让您更好地控制您的内容。祝你好运!! :D
  • 只是想更新以防万一有人读到这篇文章,我最终选择了 ImageView,我的问题得到了解决
【解决方案2】:

试试这个:

String dataString = "<head><style type='text/css'>"
                    +"body{margin:auto auto;text-align:center;} </style></head>"
                    +"<body><img src=\"image.png\"/></body>";

webview.loadDataWithBaseURL("file:///android_res/drawable/",dataString,"text/html","utf-8",null);

// set image scale to fit screen if larger than screen width
DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager wm = (WindowManager) view.getContext().getSystemService(Context.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(displayMetrics);
int screenWidth = displayMetrics.widthPixels; // minus some padding values if you have any left/right padding
Drawable drawable = getResources().getDrawable(R.id.image);
int wi = drawable.getIntrinsicWidth();

double scale = (wi>screenWidth) ? (double)screenWidth/wi : 1.0;
wv.setInitialScale((int) (scale*100));

在这种情况下,image.png 是文件名,位于 res/drawable 文件夹中。

【讨论】:

  • 如果我在加载保存的图像时遇到问题,这将很有用,我以后可能会使用它,但我的应用程序将浏览网站上的多个图像。要使用它,我似乎必须将每张图像保存到用户的手机中,以便他们查看。我可能误解了这段代码的工作原理,但据我所知,我不能用它来在线浏览图片。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
相关资源
最近更新 更多