提问者:小点点

对于膨胀布局,将视图的可见性设置为“消失”


我试图设置一些视图的可见性后,布局膨胀,但它没有工作。如果我尝试访问视图的标记,我可以清楚地看到我正在访问正确的视图。这段代码不会导致任何错误,所以我试图理解为什么它不能工作。

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

共1个答案

匿名用户

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)