【问题标题】:Adding a header to ListView - why should I inflate it?向 ListView 添加标题 - 我为什么要膨胀它?
【发布时间】:2017-03-05 18:03:32
【问题描述】:

我想在我的应用程序中为我的一个 ListView 添加一个标题,因为在我搜索之前我没有这样做。
现在我的第一种方法是在 ListView 之前添加一个 TextView 到 XML 文件中,就像这样:

<TextView
    android:id="@+id/textView1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#98cfc8"
    android:gravity="center_horizontal"
    android:text="HARD" />

它可以工作,我现在在我的 ListView 顶部有一个标题,但是在我读到的关于标题的教程中写到我应该在使用这样的代码在 XML 中创建它之后对它进行膨胀:

LayoutInflater inflater = getLayoutInflater();
    ViewGroup header = (ViewGroup) inflater.inflate(R.layout.header, listView,
            false);
    ViewGroup footer = (ViewGroup) inflater.inflate(R.layout.footer, listView,
            false);
    listView.addHeaderView(header, null, false);
    listView.addFooterView(footer, null, false);

什么是通货膨胀,与我目前的方法相比,它有什么变化?

【问题讨论】:

  • 我更喜欢第一种方法,因为页眉(以及页脚)保持固定在该位置并且不随项目滚动。正如它应该。而使用第二种方法时,“页眉”和“页脚”会与其他项目一起滚动。这(在我看来)不应该发生。

标签: android listview


【解决方案1】:

它有效,现在我的 ListView 顶部有一个标题

实际上,这不是标题。它只是列表上方的一个视图。

listView.addHeaderView 是将标题作为列表视图的一部分的正确方法。

Inflating 是将 XML 文件转换为 View 对象的过程

【讨论】:

    【解决方案2】:

    问题是您必须膨胀(渲染)视图以“允许”android 在屏幕上显示您的员工

    有时当使用了 onCreate() 方法时,不需要这样做,因为它已经由系统自己完成了

    【解决方案3】:

    在您的方法中,您创建的标题不会滚动。它将始终显示在列表上方。

    使用 addHeaderView(),它将成为列表的一部分,因此它可以与您的列表项的其余部分一起在屏幕上滚动和滚动。

    【讨论】:

      猜你喜欢
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 1970-01-01
      • 2014-07-04
      • 2021-08-14
      相关资源
      最近更新 更多