问题描述
我试图将某些视图的可见性设置为在布局膨胀后消失,但是它不起作用。如果我尝试访问视图的标签,则可以清楚地看到我正在访问正确的视图。该代码不会导致任何错误,因此我试图了解为什么它不起作用。
我正在将视图(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
未附加到您的布局。
- 要么提供您要在其中放大此布局的父视图
- 或夸大后将
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)