Android ImageView显示为图像的正确大小,但不显示图像

时间:2017-01-31 17:06:04

标签: java android android-layout dialog imageview

我有一个设置了ImageSpans的TextView,允许它显示图像。 图像填充TextView的宽度并正确显示,但是如果图像有很多细节,例如文本,这仍然可能太小。

我想在单击图像时在对话框中显示图像。

首先我将onClick监听器添加到Images中,如下所示

private void enableImageClicks(final Spannable s) {
    for(final ImageSpan span : s.getSpans(0, s.length(), ImageSpan.class)) {
        s.setSpan(new URLSpan(span.getSource()) {
            @Override
            public void onClick(View widget) {
                if(mImageClickHandler == null) {
                    super.onClick(widget); //Opens image link
                } else {
                    mImageClickHandler.imageClicked(span.getDrawable());
                }
            }

            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setUnderlineText(false);
            }
        }, s.getSpanStart(span), s.getSpanEnd(span), s.getSpanFlags(span));
    }
    setText(s);
}

我尝试过两种方法来显示图像。

第一个是具有透明背景的对话框,而ImageView中的可绘制对象如下

final Dialog dialog = new Dialog(mContext);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

final ImageView iv = new ImageView(mContext);
iv.setAdjustViewBounds(true);
iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
iv.setImageDrawable(drawable);

dialog.addContentView(iv, new RelativeLayout.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT,
        ViewGroup.LayoutParams.WRAP_CONTENT));
//Log.i(TAG, "imageClicked: Drawable " + drawable.getIntrinsicWidth() + ", " + drawable.getIntrinsicHeight());

dialog.show();

对话框显示透明叠加层,但图像无法显示。 我可以看到drawable有宽度和高度,LayoutInspector显示ImageView具有正确的尺寸。

其次,我尝试用XML定义布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent">


    <ImageView
        android:id="@+id/dialog_imageview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:scaleType="fitCenter"/>

final AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
final LayoutInflater inflater = LayoutInflater.from(mContext);
final View view = inflater.inflate(R.layout.dialog_image, null);

builder.setView(view);

 ((ImageView)view.findViewById(R.id.dialog_imageview)).setImageDrawable(drawable);
builder.create().show();

然而,这与以前完全相同。对话框显示,ImageView具有正确的尺寸,但不显示图像。

感谢任何帮助。

0 个答案:

没有答案