【问题标题】:Android: ListView covers everythingAndroid:ListView 涵盖一切
【发布时间】:2014-03-01 19:47:48
【问题描述】:

我在LinearLayout 内使用ListView,在LinearLayout 下方使用另一个LinearLayout,因为ListView 似乎占用了所有空间,所以不会显示。

代码:

listView = new ListView(this);
listView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,                   LayoutParams.MATCH_PARENT));
listLayout = new LinearLayout(this);
listLayout.setOrientation(LinearLayout.VERTICAL);
listLayout.addView(listView);
listLayout.addView(new NavigationBar(this, "android.intent.action.MAIN", "android.intent.action.MY_ACTIVITY"));
setContentView(listLayout);

NavigationBar 也是一个包含一些按钮的 LinearLayout。 如果添加在其上,它只会正常播放,如果在 ListView 之后添加,它根本不会显示。

【问题讨论】:

  • 您错过了 listlayout 的 setlayoutparams。 gui开发最好使用布局文件

标签: android listview layout android-linearlayout


【解决方案1】:

您应该为线性布局设置权重属性或为列表视图使用固定高度。请张贴xml布局以帮助更好地理解。

【讨论】:

    【解决方案2】:

    改变

    listView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    

    listView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 0, 1));
    

    (假设你已经导入了LinearLayout的LayoutParams,否则就是new LinearLayout.LayoutParams

    这意味着列表视图本身不会占用任何垂直空间,因此导航栏可以按照它想要的大小进行布局,但是,任何空闲空间都将分配给列表视图,因为它有重量。

    您还应该考虑在底部没有导航栏,这是非常 iPhone 要做的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      • 2019-04-06
      • 2015-04-20
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      相关资源
      最近更新 更多