为膨胀的布局设置视图的可见性消失

Posted

技术标签:

【中文标题】为膨胀的布局设置视图的可见性消失【英文标题】:Set visibility for view to gone for an inflated layout 【发布时间】:2020-12-05 18:17:00 【问题描述】:

我正在尝试将某些视图的可见性设置为布局膨胀后消失,但它不起作用。如果我尝试访问视图的标签,我可以清楚地看到我正在访问正确的视图。此代码不会导致任何错误,因此我试图了解它为什么不起作用。

我将视图 (hideView) 和布局 (layout) 的资源 ID 作为参数传入:

public void hideViews(String title, ArrayList<Integer> hideView, int layout)

    final LayoutInflater factory = getLayoutInflater();
    final View originalView = factory.inflate(layout, null);

    for (int i = 0; i < hideView.size(); i++) 

        View view = originalView.findViewById(hideView.get(i));

        if (title.equals("Admin") || title.equals("Manager"))
            view.setVisibility(View.VISIBLE);
        else
            view.setVisibility(View.GONE);
        
    

【问题讨论】:

请分享您的观点.xml 【参考方案1】:

originalView 未附加到您的布局中。

    提供您要在其中扩展此布局的父视图 或者在膨胀后添加originalView作为其他附加视图的子视图。

假设这是你的父视图

ViewGroup parentView = (ViewGroup)findViewById(R.id.parentView);

解决方案 1

替换这个:

final View originalView = factory.inflate(layout, null);

与:

final View originalView = factory.inflate(layout, parentView);

解决方案 2

添加这个:

parentView.add(originalView)

【讨论】:

以上是关于为膨胀的布局设置视图的可见性消失的主要内容,如果未能解决你的问题,请参考以下文章

当我将 ImageView 的可见性设置为线性布局消失时,它的一个孩子仍然存在,另一个在 android 中消失了

使用动画将视图的可见性从消失变为可见

设置可见性时 XML 列表视图重叠元素

android Xml 布局,可见性消失了调整我的父布局

Android:将可见设置为在运行时消失会留下一个空白空间

如果列表项为空,则将可见性设置为消失