【问题标题】: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

标签: android visibility layout-inflater


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多