我有一个应用程序,其中加载了图像并附加到Chris Banes PhotoView。当我单击图像时,它会转到布局并创建全屏布局,这需要隐藏图像所在布局上的其他功能。
在宽度和高度上将imageView设置为match_parent,因为如果将其设置为match_content,则无法真正缩小以进行缩放。因此,图片周围有很多空间,这是一个透明的imageView,当用户使用捏合放大时使用。
问题在于预期的行为,如果您单击全屏布局关闭的图像旁边的透明部分。但是,这与图像需要扩展的imageView相同。
最初我搜索并找到了
dialog.setCanceledOnTouchOutside(true);
但是因为imageView占据整个屏幕所以图像可以扩展到它,所以没有外面可以接触。
这里有一个简单的解决方案吗?就像最初将imageView设置为match_content一样,但是当你开始缩放时,它将新的宽度/高度设置为它需要的值?或者是否可以解决imageView未使用的额外空间并设置dialog.dismiss或其他内容。 或者在我目前的设置中是不可能的。
xml代码(还有更多但与我的问题无关)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/transparent"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_map_full_screen"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/ll_container_close_button"
/>
</RelativeLayout>
片段代码
private void showDialogFullscreenMap() {
final Dialog alertDialog = new Dialog(getActivity());
alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
alertDialog.setCanceledOnTouchOutside(true);
LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View convertView = inflater.inflate(R.layout.dialog_map_fullscreen, null, false);
ImageView ivFullScreen = (ImageView) convertView.findViewById(R.id.iv_map_full_screen);
ivFullScreen.setImageBitmap(mTempBitmap);
mAttacher = new PhotoViewAttacher(ivFullScreen);