Просмотр высоты и ширины 0 при установке с параметрами макета - PullRequest
0 голосов
/ 10 мая 2019

Попытка надуть и добавить пользовательский вид с определенной шириной и высотой от родительского вида. Я попытался использовать параметры макета, вручную установить размер SurfaceView и многое другое, но не повезло. Застрял в этом какое-то время, любая помощь приветствуется.

Высота и ширина родительского вида верна:

enter image description here

Я попытался накачать представление с помощью XML-макета и вызвать его программно. Я предполагаю, что это имеет отношение к родителю. Родителем было представление RelativeLayout, я также пробовал представление Frame и Coordinator. Если родитель имеет полный экран, значит ли это, что у ребенка нет места? Как мне решить эту проблему, чтобы иметь несколько стеков одного размера?

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

        addOnTapListener(mainVideoView);
    }

Глядя на инспектор макета, я вижу, что высота и ширина макета установлены, однако фактические высота и ширина вида не установлены.

enter image description here

 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
...