findViewById在自定义视图中返回“null”

2022-01-29 10:25:58 标签 javaandroidxmlandroid-custom-view

findViewById在自定义视图中为“mImageView”和“mCropOverlayView”返回“null”。

public class CropImageView extends FrameLayout {
private ImageView mImageView;
private CropOverlayView mCropOverlayView;
public CropImageView(@NonNull Context context) {
    super(context);
    init(context);
}
public CropImageView(@NonNull Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    init(context);
}
public CropImageView(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    init(context);
}
private void init(Context context) {
    View view = inflate(getContext(), R.layout.crop_image_view, this);
    mImageView = view.findViewById(R.id.img_crop);
    mCropOverlayView = view.findViewById(R.id.overlay_crop);
}
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
}
public void setImageBitmap(Bitmap bitmap) {
    mImageView.setImageBitmap(bitmap);
    mCropOverlayView.setBitmap(bitmap);
}
public void crop(CropListener listener, boolean needStretch) {
    if (listener == null)
        return;
    mCropOverlayView.crop(listener, needStretch);
}
}

这是自定义视图的XML文件我想在自定义视图中扩展它。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
    android:id="@+id/img_crop"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:adjustViewBounds="true"
    android:scaleType="fitCenter" />
<com.wildma.idcardcamera.cropper.CropOverlayView
    android:id="@+id/overlay_crop"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignBottom="@+id/img_crop" />
</RelativeLayout>

你好@Syed Arsalan Kazmi

我创建了一个演示来快速测试你的问题findViewById()的值不是空。屏幕快照:http://prntscr。com/1sdnvuh

Android支持lib SDK 30

您的代码可以编译。

最好阅读并尝试练习您使用的库的演示。(也许你有了新的想法)

https://github。com/wildma/IDCardCamera/blob/master/README_EN。md

https://github。com/wildma/IDCardCamera/tree/master/app###What发生的情况是,inflation()不附加膨胀的视图,如果最后一个参数不为空,它返回那个值。最简单的修复方法是传递null而不是这个:

View view = inflate(getContext(), R.layout.crop_image_view, null);

返回的视图将是RelativeLayout。你可能想把它添加到你的视图层次结构中:

   addView(view);
阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码