【问题标题】:Why can't ListView be top level view?为什么 ListView 不能是顶级视图?
【发布时间】:2015-06-14 16:40:30
【问题描述】:

所以要创建一个包含单个 ListView 的 Fragment,我必须这样做

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
                xmlns:tools="http://schemas.android.com/tools"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:paddingTop="@dimen/activity_vertical_margin"
                android:paddingBottom="@dimen/activity_vertical_margin"
                tools:context=".MainActivityFragment">

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</FrameLayout>

为什么我必须将 ListView 放在 FrameLayout 中?为什么 ListView 不能是顶级视图?

更新

我问错了问题:我的意思是:为什么让 ListView 本身成为顶级视图不是最佳实践?我总是在在线代码中看到 FrameLayout 包装器。

【问题讨论】:

  • “我总是在在线代码中看到 FrameLayout 包装器”——请随时链接到一些。或者,正如 Wikipedians 所说:请引用。请注意,ListFragment 不需要布局文件,如果您只是让它管理单个 ListView
  • 来自“受人尊敬的”回购的一个简单示例:github.com/udacity/Sunshine-Version-2/blob/sunshine_master/app/…
  • 该 XML 中的框架布局不起作用,除非它们以编程方式添加覆盖列表视图的其他视图(例如浮动操作按钮)
  • 在那种特殊情况下,我不知道他们为什么要打扰FrameLayout。我没有看到他们在ForecastFragment 中使用它的地方,那里的布局被夸大了。没有浪费的容器“最佳实践”,而FrameLayout 似乎是一个浪费的容器。

标签: android android-layout listview


【解决方案1】:

可以,只要您不希望在布局中添加任何其他内容。

FrameLayout 与 Linear 和 Relative 相同,是多个视图的容器,但如果您只有一个,则不需要它们。

大多数在线看到的布局文件都假设您可能希望通过添加诸如空状态或工厂之类的必需品来扩展您的用户界面。你的空状态也需要在相同的布局上。

【讨论】:

  • 嗨。您在我发布更新(比赛条件)之前就回答了,对不起。请查看我的更新。
  • 更新了简短的猜测。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-23
  • 1970-01-01
  • 2016-07-20
  • 2011-12-16
相关资源
最近更新 更多