dialog内部webview显示网页生成的二维码(网页非图)宽度问题

来源:互联网 发布:51单片机flash多大 编辑:程序博客网 时间:2024/06/09 14:42

使用webview外部布局必须填满或设置高度,所以布局如下[二维码原背景为无,chrome显示为黑色,坑。。。]:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center"    android:orientation="horizontal">    <WebView        android:id="@+id/web"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:scrollbars="none"        android:layout_gravity="center_horizontal"/></LinearLayout>
final View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.qrcode,null);final android.webkit.WebView web = (android.webkit.WebView) view.findViewById(R.id.web);web.getSettings().setUseWideViewPort(true);web.getSettings().setLoadWithOverviewMode(true);if(qrDialog == null){     qrDialog = new AlertDialog.Builder(MainActivity.this)                    .setView(view).create();}getProgressDialog().show();final android.view.WindowManager.LayoutParams p = qrDialog.getWindow().getAttributes();final ViewGroup.LayoutParams params = web.getLayoutParams();vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {    @Override    public void onGlobalLayout() {          if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {                view.getViewTreeObserver().removeOnGlobalLayoutListener(this);          }else                view.getViewTreeObserver().removeGlobalOnLayoutListener(this);                int height = view.getHeight();                params.width = PictureUtil.dip2px(MainActivity.this,height);                params.height = PictureUtil.dip2px(MainActivity.this,height);                p.width = PictureUtil.dip2px(MainActivity.this,height)+70;                qrDialog.getWindow().setAttributes(p);                web.setLayoutParams(params);          }   });web.setWebViewClient(new WebViewClient(){     @Override     public void onPageFinished(WebView view, String url) {          super.onPageFinished(view, url);          getProgressDialog().dismiss();          qrDialog.show();    }}); web.loadUrl("二维码网址。。。");

比较坑的是,还是做不到长宽一致只能保证二维码显示是完整的,所以这里加了一个数字,看起来稍微自然。
p.width = PictureUtil.dip2px(MainActivity.this,height)+70;

原创粉丝点击