Android 膨胀布局根的可见性随子项而变化';s能见度

Android 膨胀布局根的可见性随子项而变化';s能见度,android,visibility,layout-inflater,Android,Visibility,Layout Inflater,我现在正在做一个学校项目,我的Android应用程序出现了一个奇怪的错误/副作用。 最终目标应该是在按下屏幕顶部的按钮后显示的视图。它最初以不可见的方式放置,然后进行切换 然而,由于某种原因,它所附加到的根视图也被切换了可见性,这恰好是它所在片段的主要布局。因此,最初的setVisibility()调用会导致我的整个片段消失 有什么原因吗 编辑:为布局指定要附加的FrameLayout可修复此问题。然而,问题仍然存在:是什么导致了这种行为 代码: XML: 片段布局: ... 子视图: 您正在

我现在正在做一个学校项目,我的Android应用程序出现了一个奇怪的错误/副作用。 最终目标应该是在按下屏幕顶部的按钮后显示的视图。它最初以不可见的方式放置,然后进行切换

然而,由于某种原因,它所附加到的根视图也被切换了可见性,这恰好是它所在片段的主要布局。因此,最初的setVisibility()调用会导致我的整个片段消失

有什么原因吗

编辑:为布局指定要附加的FrameLayout可修复此问题。然而,问题仍然存在:是什么导致了这种行为

代码:

XML:


片段布局:
...
子视图:

您正在切换整个
仪表板容器的可见性。
我相信这
dashboardContainer.setVisibility(View.VISIBLE)
应替换为
vgTimeSelector.setVisibility(View.VISIBLE)

dashboardContainer.setVisibility(视图.不可见)带有
vgTimeSelector.setVisibility(View.INVISIBLE)

那是个问题,不是问题。即使改变了这一点,问题仍然存在。然而,将它放在框架布局中确实解决了这个问题,它并不能解释这种行为
        @Override
    public void onStart() {
        super.onStart();

        //prep timeselector view for transitions
        dashboardContainer = this.getView().findViewById(R.id.dashboardContainer);
        vgTimeSelector = getLayoutInflater().inflate(R.layout.viewgroup_timeselector,dashboardContainer);
        vgTimeSelector.setVisibility(View.INVISIBLE);

        //add timeselector popup
        bellButton = this.getView().findViewById(R.id.notificationButton);
        bellButton.setOnClickListener(togglerListener);
    }

private void toggleTimeSwitcherView () {

        //this is all animation stuff for timeselector
        int x = vgTimeSelector.getRight();
        int y = vgTimeSelector.getTop();
        int endRadius = (int) Math.hypot(vgTimeSelector.getWidth(),vgTimeSelector.getHeight());

        if (vgTimeSelector.getVisibility() == View.INVISIBLE) {
            vgTimeSelector.setVisibility(View.VISIBLE);
            Animator animator = ViewAnimationUtils.createCircularReveal(vgTimeSelector, x, y, 0, endRadius);
            animator.start();
        }
        else {
            Animator animator = ViewAnimationUtils.createCircularReveal(vgTimeSelector, x, y, endRadius, 0);
            animator.start();
            vgTimeSelector.setVisibility(View.INVISIBLE);
        }
    }
//this is all animation stuff for timeselector
        int x = vgTimeSelector.getRight();
        int y = vgTimeSelector.getTop();
        int endRadius = (int) Math.hypot(vgTimeSelector.getWidth(),vgTimeSelector.getHeight());

        if (vgTimeSelector.getVisibility() == View.INVISIBLE) {
            dashboardContainer.setVisibility(View.VISIBLE);
            Animator animator = ViewAnimationUtils.createCircularReveal(vgTimeSelector, x, y, 0, endRadius);
            animator.start();
        }
        else {
            Animator animator = ViewAnimationUtils.createCircularReveal(vgTimeSelector, x, y, endRadius, 0);
            animator.start();
            dashboardContainer.setVisibility(View.INVISIBLE);
        }