【问题标题】:SetVisibility doesn't work?设置可见性不起作用?
【发布时间】:2012-05-01 13:04:08
【问题描述】:

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

这是我的“家”布局外壳:

<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);
}

我认为它应该可以工作,但是当我测试它时,什么也没有发生。

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

【问题讨论】:

    标签: android layout visibility


    【解决方案1】:

    编辑:

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

    【讨论】:

      【解决方案2】:

      你为什么在这里膨胀一个布局?:

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

      只要做:

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

      【讨论】:

      • 好吧,那是个错误。感谢您的快速答复!
      【解决方案3】:

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

      请尝试:

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

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

      【讨论】:

      • 这是对的,尽管您可能更喜欢View.GONE 而不是View.INVISIBLE,具体取决于应用程序。
      • 是的,这取决于您是要释放视图占用的空间(GONE)还是只是隐藏它但保留它的空间(INVISIBLE),如果您在可见之间切换,只需将其设置为不可见也会更快由于视图层次结构没有改变,所以很多时候不可见
      猜你喜欢
      • 2012-12-17
      • 2016-01-09
      • 2013-05-01
      • 1970-01-01
      • 2018-10-08
      • 2011-12-16
      • 1970-01-01
      • 2012-07-26
      • 2013-11-09
      相关资源
      最近更新 更多