首页 > 解决方案 > 使用布局参数设置时查看高度和宽度 0

问题描述

尝试从父视图膨胀并添加具有特定宽度和高度的自定义视图。我尝试过使用布局参数,手动设置 SurfaceView 大小等等,但没有运气。一直坚持这一点,任何帮助表示赞赏。

父视图的高度和宽度是正确的:

在此处输入图像描述

我尝试使用 XML 布局扩展视图并以编程方式调用它。我猜它必须与父母做一些事情。父级是一个RelativeLayout 视图,我也尝试过一个Frame 和Coordinator 视图。如果父母是全屏尺寸,这是否意味着孩子没有空间?我将如何解决这个问题,让多个视图堆栈大小相同?

if (mainVideoView == null) {
        mainVideoView = new VideoView(themedReactContext);
        addView(mainVideoView, new LayoutParams(getWidth(), getHeight()));

        addOnTapListener(mainVideoView);
    }

查看布局检查器,我可以看到布局高度和宽度已设置,但实际视图高度和宽度未设置。

在此处输入图像描述

 public void init() {
    createAudioTrack();

    if (mode != null && role != null) {
        if (role.equals(ROLE_PRESENTER)) {
            switch (mode) {
                case MODE_VIDEO:
                    addOnTapListener(mainVideoView);
                    createVideoTrack(null);
                    break;
                case MODE_AR:
                    inflate(getContext(), R.layout.ar_layout, this);
                    arView = findViewById(R.id.ar_container);
                    arView.setBackgroundColor(Color.GREEN);

                    arView.setLayoutParams(new FrameLayout.LayoutParams(getWidth(), getHeight(), Gravity.CENTER));
                    arView.setMinimumWidth(getWidth());
                    arView.setMinimumHeight(getHeight());
                    arView.measure(MeasureSpec.makeMeasureSpec(
                            getWidth(), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(
                            getHeight(), MeasureSpec.EXACTLY));

                    arView.requestLayout();
                    requestLayout();

                    createVideoTrack(new ViewCapturer(arView.arFragment.getArSceneView()));
                    break;
                case MODE_MEASURE:
                    createVideoTrack(null);
                    break;
                default:
                    break;
            }
        }
    }
}

ViewGroup "TwilioVideo" 的日志显示正确的大小:

 I/@@@TwilioVideo: resume
 I/@@@TwilioVideo: twilio video focus: true
 I/@@@TwilioVideo: visibiity: 6
 I/@@@TwilioVideo: AR PRESENTER
 I/@@@TwilioVideo: 2220 1080
 I/@@@ARView: onFinishInflate
 I/@@@Format:  0 0 30
 I/@@@Format:  0 0 30
 I/@@@Format:  0 0 30
 I/@@@Format:  0 0 30

标签: androidandroid-layoutandroid-view

解决方案


推荐阅读