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) 个答案