【问题标题】:Is there a proper way to use the Appcompat "NavigationView" as permanent (see Material Design guidelines)是否有正确的方法可以永久使用 Appcompat“NavigationView”(请参阅​​材料设计指南)
【发布时间】:2016-02-02 14:29:05
【问题描述】:

通过阅读有关导航抽屉(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" />

【问题讨论】:

标签: android drawerlayout navigationview android-navigationview


【解决方案1】:

如果您不想将导航视图用作抽屉,请不要将NavigationView 直接放在DrawerLayout 内。

<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 英寸及以上平板电脑上横向加载。

【讨论】:

  • 天啊,这么简单,为什么我错过了?
  • 注意:我完全移除了DrawerLayout,还有什么理由保留吗?
  • 仅当您想使用正确的抽屉做某事时。
  • 我看到的唯一问题是发疯的焦点:stackoverflow.com/questions/38992356/…
【解决方案2】:

除了 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);

并添加一些边距:

值/dimens.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>

【讨论】:

    【解决方案3】:

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

    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)
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-04
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 2014-12-08
      • 2015-02-07
      • 1970-01-01
      • 1970-01-01
      • 2017-06-18
      相关资源
      最近更新 更多