2014-11-21 106 views
0

我正在尝试将导航抽屉实施到受Material Design影响的应用中(Appcompat v21)。导航抽屉无法正常工作 - 总是全屏

所以我刚刚创造了基本的XML文件:

enter image description here

你可能在一个位放大到能够告诉我所做的事情有:

  1. 根查看是android.support.v4.widget.DrawerLayout本身
  2. 第一个孩子是主要内容,这里作为一个简单的LinearLayout
  3. 第二个chil d - 抽屉本身 - 是一个简单的listview,宽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); 

} 
} 
+0

当你使用FrameLayout而不是LinearLayout时,你有同样的事情吗? – Rami 2014-11-21 21:17:16

+0

刚刚测试过它:是的,我使用FrameLayout也有同样的问题。也许值得一提的是,我禁用了主题中的'windowActionBar',因为我正在使用工具栏。但我认为这不应该是一个问题 – user2410644 2014-11-21 21:20:38

+0

你可以发布活动代码吗? – Rami 2014-11-21 21:27:56

回答

1

待所示的抽屉内的视图(在这种情况下,ListView)必须具有android:layout_gravity="start"属性集。

documentation

抽屉定位和布局上使用与您想要的抽屉,从出现的视图,其 侧子视图 android:layout_gravity属性控制:向左或向右。 (或开始在支持布局方向平台的版本/结束。)

要使用DrawerLayout,定位主内容视图作为第一 孩子的match_parent的宽度和高度。 在主内容视图之后添加抽屉儿童 视图并适当地设置layout_gravity抽屉通常使用match_parent高度,固定宽度为 。

+0

谢谢,要检查。我怎么监督这个......谢谢! – user2410644 2014-11-21 21:41:27