将视图的可见性设置为夸大的布局

问题描述

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

我正在将视图(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);
        }
    }
}

解决方法

originalView未附加到您的布局。

  1. 要么提供您要在其中放大此布局的父视图
  2. 或夸大后将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)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...