3

通过阅读有关导航抽屉(Drawerlayout + NavigationView)的材料设计指南,我看到有一个建议将其设置为始终在桌面上打开。这就是我想在平板电脑上实现的目标。

永久导航抽屉始终可见并固定在左边缘,与内容或背景处于同一高度。它们不能关闭。

在此处输入图像描述

但是似乎支持库中提供的小部件并不容易操作并达到这样的效果。

我错过了什么,还是有一种简单的方法可以让它在平板电脑/台式机/电视上打开?

我目前的手机布局:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <android.support.v7.widget.Toolbar
        android:id="@+id/my_awesome_toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/primarycolor"
        android:minHeight="?attr/actionBarSize"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>


<!-- The navigation drawer   style="@style/NavDrawer"

                 android:background="@android:color/white"-->
<android.support.design.widget.NavigationView
    android:id="@+id/navigation"
    app:headerLayout="@layout/nav_header"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:menu="@menu/nav" />

4

3 回答 3

3

如果您不想将导航视图用作抽屉,请不要NavigationViewDrawerLayout.

<DrawerLayout>
    <LinearLayout>
        <NavigationView android:layout_width="320dp" />
        <LinearLayout android:orientation="vertical">
            <Toolbar/>
            <FrameLayout android:id="@+id/content_frame" />
        </LinearLayout>
    </LinearLayout>
</DrawerLayout>

把这个布局放在里面/res/layout-sw600dp-land。您的原始布局将在手机上加载,而这个布局将在 7 英寸及以上平板电脑上横向加载。

于 2016-02-02T15:31:32.053 回答
1

除了 DevrimTuncer 的回答,我还发现了这篇文章:http ://derekrwoods.com/2013/09/creating-a-static-navigation-drawer-in-android/

此外:

 drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN, drawerList);

我们还必须设置:

drawerLayout.setScrimColor(Color.TRANSPARENT);

并添加一些边距:

值/尺寸.xml

<resources>
    <dimen name="drawer_size">240dp</dimen>
    <dimen name="drawer_content_padding">0dp</dimen>
</resources>

values-sw720dp-land/dimens.xml

<resources>
    <dimen name="drawer_content_padding">240dp</dimen>
</resources>
于 2016-02-02T15:15:15.710 回答
0

我将创建一个布尔资源值并使用它为此设置抽屉锁定模式。例如:

res
  -- values
    -- drawer_layout_values.xml
         <bool name="drawer_layout_locked">false</bool>
  -- values-sw720dp
    -- drawer_layout_values.xml
         <bool name="drawer_layout_locked">true</bool>

代码:

if(getResources().getBoolean(R.bool.drawer_layout_locked)) {
    drawerLayoutInstance.setDrawerLockMode (DrawerLayout.LOCK_MODE_LOCKED_OPEN)
}
于 2016-02-02T14:58:32.927 回答