【问题标题】:Android ListView - first element not centered verticallyAndroid ListView - 第一个元素未垂直居中
【发布时间】:2015-08-02 06:57:39
【问题描述】:

从下面的屏幕截图中可以看出,列表视图中的第一项不是垂直居中的。怎样才能居中?

活动 XML

 <ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/listView"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_above="@+id/button"
    android:layout_alignParentTop="true" />

代码,我只是从书籍数组中填充列表视图...

List<String> books = new ArrayList<String>();
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(Main.this,  android.R.layout.simple_list_item_1, books);
lvFirst.setAdapter(adapter1);

【问题讨论】:

  • 了解自定义适配器 - stackoverflow.com/questions/8166497/…
  • 我没有看到任何明显的原因。唯一想到的是字符串开头的换行符。确保在将它们添加到列表之前修剪所有文本。

标签: android xml listview


【解决方案1】:

尝试将此行添加到您的 ListView XML:

android:gravity="center"

应该是这样的:

<ListView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/listView"
  android:layout_alignParentLeft="true"
  android:layout_alignParentStart="true"
  android:layout_above="@+id/button"
  android:layout_alignParentTop="true" 
  android:gravity="center"/>

编辑:

抱歉,现在我明白了您的问题。

您正在使用“android.R.layout.simple_list_item_1”作为内置布局,但它不会那样工作。

这是this question 的副本。

总结一下,你需要创建自己的布局来传递给适配器。答案在上面发布的问题链接中。

【讨论】:

  • 试过了,不能给listview添加重力
  • it won't work that way. 为什么不呢?我认为没有任何充分的理由仅仅因为人们不了解正在发生的事情而进行自定义布局
  • android.R.layout.simple_list_item_1 是 Android 操作系统的内置布局,因此您无法更改其中的任何内容。如果您想自定义列表中的项目,您可以创建自定义布局,这不会花费 5 分钟,或者创建自定义适配器,这将需要更多时间。
【解决方案2】:

感谢您的时间和回答,但我不敢相信这是一个糟糕的实现,所以我只列出了一些默认布局,这解决了我的问题,所以我想在这里写它以帮助将来的人.

adapter1 = new ArrayAdapter<String>(Main.this, android.R.layout.simple_selectable_list_item, books);

我刚换了:

android.R.layout.simple_list_item_1

到:

android.R.layout.simple_selectable_list_item

【讨论】:

    猜你喜欢
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多