ScrollView滚动导致内部View点击事件失效

编者:李国帅

qq:9611153 微信lgs9611153

时间:2019/10/18 

背景:

所需资源:android studio

做了一个activity界面,顶层使用ScrollView,内部包含图片。ScrollView滚动之后,图片需要点击两下才能打开全屏查看。

只能认为图片需要双击才能打开。

 

com.goyourfly.multi_picture.MultiPictureView 不行

更换为 ImageView 控件,发现还是会出现上下滚动之后,图像点击无法响应,需要再次点击的现象。

只能把图像缩小一点,减缓这种情况的出现。

 

即便是重新建立一个简单项目,发现滚动视图中的图片点击依然有问题。

重要结论:

通过测试,发现滚动之后,点击马上点击才会出现,如果点击等待2秒钟再去点击就可以正常了。

可能的原因是滚动之后程序还在内部执行,没有执行完毕,才会出现这样的问题。

也可能是手机运行效率的问题,其他的手机也许没有这个问题。

 

布局

        <com.goyourfly.multi_picture.MultiPictureView

            android:id="@+id/iv_professional_technical_qualifications"
            android:layout_width="match_parent"
            android:layout_height="@dimen/dp_165"
            android:layout_gravity="center"
            android:src="@drawable/placeholder_aptitude"
            app:imageLayoutMode="STATIC"
            app:max="1"
            app:ratio="1"
            app:space="1dp"

            app:span="1" />

文件处理

        GlideEngine imageEngine = new GlideEngine();
        MultiPictureView.setImageLoader((ImageLoader) (imageView, uri1) -> {
            imageEngine.loadImage(getContext(), 512, 512, imageView, uri1);
        });

        Resources resources = this.getResources();//错误占位图片
        int resIdError = R.drawable.placeholder_aptitude;
        Uri uriError = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE + "://" + resources.getResourcePackageName(resIdError) + '/' + resources.getResourceTypeName(resIdError) + '/' + resources.getResourceEntryName(resIdError));

   if (TextUtils.isEmpty(XXXPractisingLicense)) {
            contentBinding.tvXXXPractising.setText("证书(无)");

            //contentBinding.ivXXXPractising.addItem(uri, false);
            //contentBinding.ivXXXPractising.refresh();
        } else {
            contentBinding.tvXXXCertificate.setText("证书");
            contentBinding.ivXXXCertificate.setItemClickCallback(((view, i, arrayList) -> {
                SystemUtils.openFile(this, arrayList.get(i));
            }));

            new Thread(() -> {
                Uri uri = GlideEngine.loadImage2(XXXCertificate, IMAGEDIR);//必须在普通线程
                if (uri == null) {
                    uri = uriError;//setImageLoader中应当设置错误图片
                }
                contentBinding.ivXXXCertificate.addItem(uri, false);
                runOnUiThread(() -> contentBinding.ivXXXCertificate.refresh());
            }).start();
		}

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微澜-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值