有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

首先,我将onClick侦听器添加到图像中,如下所示

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();

对话框显示为透明覆盖,但图像不显示。 我可以看到可绘制的具有宽度和高度,LayoutSpector显示ImageView具有正确的尺寸

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

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


    <ImageView
        安卓:id="@+id/dialog_imageview"
        安卓:layout_width="fill_parent"
        安卓:layout_height="wrap_content"
        安卓:adjustViewBounds="true"
        安卓: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) 个答案