我有一个设置了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具有正确的尺寸,但不显示图像。
感谢任何帮助。