SetVisibility不起作用?

时间:2012-04-19 22:37:22

标签: android layout visibility

我是开发Android的新手。我有一个网格包含在LinearLayout中,构成网格的每个项目都是一个按钮。当用户按下任何这些按钮时,我希望此LinearLayout不可见。

这是我的“主页”布局shell:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
  <TextView/>
  <LinearLayout>   //<-- this is the layout I want to hide
     <TextView/>
     <GridView/>
  </LinearLayout>
</LinearLayout>

这是我在MyArrayAdapter中设置的onClick方法(用于给按钮充气)

@Override
public void onClick(View v) {
   View convertView = activity.getLayoutInflater().inflate(R.layout.layout_home, null);  
   LinearLayout ll_options = (LinearLayout) convertView.findViewById(R.id.ll_options);
   ll_options.setVisibility(View.INVISIBLE);
}

我认为它应该有用,但是当我测试它时,没有任何反应。

我发现了一个类似的问题,但它并没有解决我的问题。

3 个答案:

答案 0 :(得分:8)

为什么要在这里给布局充气?:

View convertView = activity.getLayoutInflater().inflate(R.layout.layout_home, null);

只是做:

View v = activity.findViewById(R.id.ll_options);
v.setVisibility(View.INVISIBLE);

答案 1 :(得分:2)

您创建一个不在可见视图层次结构中的新视图,直到您将其添加到那里,然后隐藏它。所以你隐藏了一些看不见的东西。

相反,请尝试:

@Override
public void onClick(View v) {
   findViewById(R.id.ll_options).setVisibility(View.INVISIBLE);
}

IMO应该如何工作。它会在您的活动的可见(全局)视图层次结构中搜索ll_options视图并隐藏它。

答案 2 :(得分:0)

修改

你的按钮在哪里?它在同一个布局文件中吗? 你膨胀一个新布局并在那里隐藏LinearLayout,但是从不使用这个新布局。确保您可以在侦听器中访问contentView。