【问题标题】:Navigation Drawer not working properly - Always fullscreen导航抽屉无法正常工作 - 始终全屏
【发布时间】:2014-11-21 21:08:43
【问题描述】:

我正在尝试将导航抽屉实现到受 Material Design 影响的应用程序(Appcompat v21)中。

因此我刚刚创建了基本的 xml 文件:

你可能会放大一点,以便能够知道我在那里做了什么:

  1. 根视图是 android.support.v4.widget.DrawerLayout 本身
  2. 第一个孩子是主要内容,这里是一个简单的LinearLayout
  3. 第二个孩子 - 抽屉本身 - 是一个简单的列表视图,240dp 宽。

如您所见,背景应该是粉红色的,因为我告诉主要内容视图是粉红色的。列表视图应该是蓝色的。现在,正如您在预览窗口右侧看到的那样,整个屏幕变为蓝色,而不仅仅是 listView。

我的问题在哪里?我告诉列表视图只有 240dp 宽,不匹配父视图。 如果我尝试运行应用程序,抽屉永远不会“关闭”,这意味着列表就在主内容视图的顶部。

该程序似乎不知道 DrawerLayout 是什么,只是将其内容绘制在主内容布局上。

我不知道为什么这次不行。

有什么建议吗?

编辑: 测试活动:

public class TestActivity extends Activity {

DrawerLayout drawerLayout;
ListView listView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);

    drawerLayout = (DrawerLayout)findViewById(R.id.test_drawer_layout);
    listView = (ListView)findViewById(R.id.test_left_drawer);

}
}

【问题讨论】:

  • 你用FrameLayout而不是LinearLayout的时候也一样吗?
  • 刚刚测试过:是的,我在使用 FrameLayout 时遇到了同样的问题。也许值得一提的是,我在主题中禁用了“windowActionBar”,因为我使用的是工具栏。但我认为这应该不是问题
  • 可以发一下活动代码吗?
  • 编辑了我的帖子。活动代码没什么特别的,只是初始化两个对象

标签: android android-layout listview android-listview


【解决方案1】:

要在抽屉内显示的视图(在本例中为ListView)必须设置android:layout_gravity="start" 属性。

来自documentation

抽屉的定位和布局由 android:layout_gravity 子视图上的属性对应于哪个 您希望抽屉出现的视图的一侧:左侧或右侧。 (或在支持布局方向的平台版本上开始/结束。)

要使用DrawerLayout,请将您的主要内容视图放在首位 宽度和高度为match_parent 的孩子。 将抽屉添加为子项 主要内容视图之后的视图并设置layout_gravity 抽屉通常使用match_parent 表示高度,并带有 固定宽度。

【讨论】:

  • 谢谢,去看看。我怎么能监督...谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
相关资源
最近更新 更多