我有一个自定义 ListView,其中包含一个膨胀的 webView。这是 XML 代码
reader_layout.xml
<ListView
android:id="@+id/listReader"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/readerHeader"
android:divider="@android:color/background_dark"
android:dividerHeight="5dp" >
</ListView>
reader_list_webview.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<WebView
android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false"
android:scrollbars="none" />
</RelativeLayout>
我正在使用 AsyncTask 和 BaseAdapter 用 WebView 填充 listView,并且我在每个 webView 中加载了不同的 URL。这是java代码。
public class ImageAdapter extends BaseAdapter { public ImageAdapter(Context c) { context = c; } // ---returns the number of images--- public int getCount() { return URLs.size(); } public ImageAdapter(Context ctx, Activity act) { inflater = (LayoutInflater) act .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } // ---returns the ID of an item--- public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } // ---returns an ImageView view--- public View getView(final int position, View convertView, ViewGroup parent) { // ImageView bmImage; final ViewHolder holder; View vi = convertView; if (convertView == null) { vi = inflater.inflate(R.layout.book_reader_list_style, parent, false); holder = new ViewHolder(); holder.webView = (WebView) vi.findViewById(R.id.webView1); WebSettings webSettings = holder.webView.getSettings(); webSettings.setCacheMode(WebSettings.LOAD_DEFAULT); holder.webView.setVerticalScrollBarEnabled(false); holder.webView.setHorizontalScrollBarEnabled(false); holder.webView.setVisibility(View.VISIBLE); webSettings.setLoadWithOverviewMode(true); webSettings.setUseWideViewPort(false); holder.webView.setInitialScale(scaleWebView); vi.setTag(holder); } else { holder = (ViewHolder) vi.getTag(); } holder.webView.loadUrl((URLs.get(position))); return vi; }
}
类 ViewHolder { WebView webView; }
一切正常。但问题是一些 URL 变得比 webview 大小更宽,因此它们不适合设备屏幕宽度,并且一些 URL 加载小页面,因此我们需要设置 webview 的缩放。
- 我想根据 URL 页面的大小动态设置 webView 的缩放/比例。所以用户不应该使用放大或缩小。
我试过这个
android:layout_width="match_parent"
android:layout_height="match_parent"
还有这个
myWebview.setLoadWithOverviewMode(true);
myWebview.setUseWideViewPort(true);
这也是
holder.webView.setInitialScale(percent);
但这并不能解决我的要求。
编辑
如果我设置setLoadWithOverviewMode(true/false);
为 true 我的应用程序崩溃,这里是 Logcat
01-08 16:16:56.600: E/AndroidRuntime(8666): java.lang.IllegalArgumentException: bitmap size exceeds 32bits
- 实际上我的 webview 加载了 491X600 到 300X500 大小的图像。我怎样才能调整图像或类似的东西?但是当我设置 setLoadWithOverviewMode(true/false); 假它工作正常,但问题是 webview 没有调整大小以适应屏幕的宽度。