【问题标题】:Unable to use layout_gravity for ListView inside DrawerLayout无法在 DrawerLayout 中为 ListView 使用 layout_gravity
【发布时间】:2015-06-17 22:48:12
【问题描述】:

我正在尝试在我的应用程序中添加一个导航抽屉。代码如下:

<DrawerLayout 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"
    tools:context="com.example.abcxyz.properprojectdb.MyDrawerActivity">

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"></FrameLayout>

    <ListView
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:id="@+id/listView"
        android:entries="@array/planets"></ListView>
</DrawerLayout>

我无法为 ListView 添加属性 android:layout_gravity。不知道为什么无法使用(intellisense 可以完美运行,但不会显示 layout_gravity)

我的应用在运行时崩溃,但如果我将 DrawerLayout 替换为 LinearLayout,该应用不会崩溃。 我猜是因为我没有为 ListView 添加属性 android:layout_gravity。 这是一个快照,显示 layout_gravity 也没有出现在智能感知中

【问题讨论】:

  • 这是一个新项目。我没有在 MyDrawerActivity.java 中编写任何代码
  • 我正在使用 Android Studio,如果有帮助的话

标签: android listview navigation-drawer android-appcompat layout-gravity


【解决方案1】:

一切似乎都没有问题。您可以将android:layout_gravity="start"android:layout_gravity="end" 放在ListView 中

更新

我看到了我的坏处。 @questioner 是对的。您必须将DrawerLayout 更改为android.support.v4.widget.DrawerLayout

【讨论】:

  • 但是 layout_gravity 在我的项目中不存在。它与 appcompat 库有关吗?在我正在关注的教程(slidenerd)中,他们添加了一个我没有添加的 appcompat v4 依赖项。会不会是因为这个? (我试过添加它,但它可能没有正确添加)
  • @sga4 正如我在回答中所说 - 您必须使用此支持库中的支持库和 DrawerLayout,因为它在其他地方不存在
  • 哦,对不起,我忘了。你是什​​么IDE? Android Studio 还是 Eclipse?
【解决方案2】:

替换: DrawerLayoutandroid.support.v4.widget.DrawerLayout

并将以下行添加到您的 build.gradle:

compile "com.android.support:support-v4:22.0.0"

更新

DrawerLayout 应该包含 2 个视图,并且您似乎无法将 layout_gravity 设置为代表抽屉本身的视图。您可以随时将您的ListView 包装在其他布局中,然后在您的ListView 上设置layout_gravity

【讨论】:

  • 我按照你说的做了..当我尝试构建它时,gradle找不到'com.android.support:support-v4:22.0.0',所以我添加了'com.android .support:support-v4:21.+' 代替。当我运行它时,应用程序现在不会崩溃,但 layout_gravity 仍然不会出现在智能感知中
  • 真的!但这很奇怪。当我运行这个应用程序时,抽屉会出现,并且不会在滑动时滑入/滑出。即使在文档中,developer.android.com/training/implementing-navigation/… 也有未包裹在另一个布局中的 ListView 的 layout_gravity。
  • 我不知道它是从哪里掉头的,但突然之间,它开始工作了!!无需将 ListView 包装在另一个布局中,它就可以工作!我写了 layout_width 忽略了智能感知,构建了应用程序,但它抱怨了。再次构建它,它成功了!
【解决方案3】:

我遇到了同样的问题,我浪费了大约 2 个小时来寻找解决方案。我尝试重新启动 IDE,使 IDE 失效,从 23 降级到 22,没有任何效果。

最后,我HARD TYPE完成了输入,然后它就可以使用了

android:layout_gravity=

(值得一提的是,我使用的是 AS 2.1……也许有一个奇怪的错误)

【讨论】:

  • 这是正确的答案,android studio 好像没有自动补全这个属性,不管你用的是哪个版本的v4 支持lib,你只需要输入所有的“android: layout_gravity=" 在你的布局编辑器中
  • 谢谢,它成功了。 android studio 让我们喜欢自动补全。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
  • 2014-07-04
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多