导航抽屉无法正常工作 - 始终全屏

时间:2014-11-21 21:08:43

标签: android android-layout listview android-listview

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

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

enter image description here

您可以放大一点,以便能够告诉我在那里做了什么:

  1. Root View是android.support.v4.widget.DrawerLayout本身
  2. 第一个孩子是主要内容,这里是一个简单的LinearLayout
  3. 第二个孩子 - 抽屉本身 - 是一个简单的列表视图,240dp宽。
  4. 正如您可能看到的,背景应该是粉红色的,因为我告诉主要内容视图是这样的。列表视图应为蓝色。现在您可以在预览窗口的右侧看到,整个屏幕变为蓝色而不仅仅是listView。

    我的问题在哪里?我告诉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);
    
    }
    }
    

1 个答案:

答案 0 :(得分:1)

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

来自documentation

  

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

     

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