我是开发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);
}
我认为它应该有用,但是当我测试它时,没有任何反应。
我发现了一个类似的问题,但它并没有解决我的问题。
答案 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。