查看导航抽屉预览。

10

我正在Android Studio中设计本地导航抽屉。 由于它位于活动的左侧,超出了预览范围,因此我在预览中看不到抽屉。 目前,我正在使用testlayout.xml文件来查看我的更改,但很多时候我会忘记将它们复制粘贴到正确的活动中。 有没有一种方法可以预览抽屉布局?


1
仅出于知识的缘故,Google现在提供了一个带有本地导航抽屉的设计支持库:http://developer.android.com/reference/android/support/design/widget/NavigationView.html?utm_campaign=io15&utm_source=dac&utm_medium=blog - Leonardo
可能是在Android Studio中可以预览打开的导航抽屉吗的重复问题。 - gustavohenke
如果我的答案是最佳答案,请标记为接受的答案,谢谢! - Yoker
以下是翻译的文本:应该接受@Tomek Gozdek的答案工具:openDrawer =“left”https://dev59.com/pV0b5IYBdhLWcg3wSPmL#42202565 - Shirish Herwade
4个回答

6
如果您想预览抽屉布局/导航栏,按照https://developer.android.com/training/implementing-navigation/nav-drawer.html上的教程操作。您可以将侧边栏列表放入/layout文件夹中的不同xml文件中,然后在抽屉布局xml文件中包含它。这意味着您可以在drawer_layout文件中编辑它,并且能够正确地查看它。请注意/layout/drawer_layout。
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/left_drawer"
      android:layout_width="280dp"
      android:layout_height="match_parent"
      android:layout_gravity="start"
      android:choiceMode="singleChoice"
      android:divider="@android:color/transparent"
      android:dividerHeight="0dp"
      android:background="@color/nav_drawer_background_color"/>

然后在导航栏中

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<!-- The main content view -->
<FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


</FrameLayout>

<!-- The navigation drawer -->
<include
    android:id="@+id/listView"
    layout="@layout/drawer_layout"/>
</android.support.v4.widget.DrawerLayout>

https://dev59.com/yl0a5IYBdhLWcg3wHlek - Dan Kuida

6

要查看NavigationView预览,请将工具命名空间添加到您的抽屉布局中:

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

然后,在您的导航视图布局中添加属性tools:openDrawer,该属性值等于您的导航视图的layout_gravity值,例如:

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:openDrawer="left">


<android.support.design.widget.NavigationView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="left"
    app:headerLayout="@layout/navigation_header_main"
    app:itemTextAppearance="@style/NavigationItemStyleLight"
    app:menu="@menu/navigation_main_menu"/>

</android.support.v4.widget.DrawerLayout>

5
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">

<group android:checkableBehavior="single">
    <item
        android:id="@+id/nav_camera"
        android:icon="@drawable/ic_menu_camera"
        android:title="Import" />
    <item
        android:id="@+id/nav_gallery"
        android:icon="@drawable/ic_menu_gallery"
        android:title="Gallery" />
    <item
        android:id="@+id/nav_slideshow"
        android:icon="@drawable/ic_menu_slideshow"
        android:title="Slideshow" />
    <item
        android:id="@+id/nav_manage"
        android:icon="@drawable/ic_menu_manage"
        android:title="Tools" />
</group>

<item android:title="Communicate">
    <menu>
        <item
            android:id="@+id/nav_share"
            android:icon="@drawable/ic_menu_share"
            android:title="Share" />
        <item
            android:id="@+id/nav_send"
            android:icon="@drawable/ic_menu_send"
            android:title="Send" />
    </menu>
</item>

只需添加

tools:showIn="navigation_view"

0

你可以使用NavigationView在AndroidStudio上进行预览,它比旧的NavigationDrawer更好、更容易实现。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/prof_app_bar"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:itemTextColor="@color/text_head_color"
        app:itemIconTint="@null"
        app:headerLayout="@layout/nav_header_main2"
        app:menu="@menu/professional_menu" />
</android.support.v4.widget.DrawerLayout>

在导航栏菜单中定义菜单,并将其放置于菜单资源文件夹中:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">


    <group android:checkableBehavior="single"
        android:id="@+id/top_menu">
        <item
            android:id="@+id/pnav_setting"
            android:icon="@drawable/accountsettings"
            android:title="@string/paccount_settingss" />
        <item
            android:id="@+id/pnav_expertise"
            android:icon="@drawable/professional"
            android:title="@string/pexpertise" />
        <item
            android:id="@+id/pnav_comu"
            android:icon="@drawable/communication"
            android:title="@string/pcomunication" />
        <item
            android:id="@+id/pnav_change_pass"
            android:icon="@drawable/changepasswd"
            android:title="@string/pchange_pass" />
        <item
            android:id="@+id/pnav_change_lang"
            android:icon="@drawable/changelang"
            android:title="@string/pchange_lang"
            android:visible="true"/>
    </group>

    <group android:checkableBehavior="single"
        android:id="@+id/middle_menu">

        <item
            android:id="@+id/pnav_about_us"
            android:icon="@drawable/aboutus"
            android:title="@string/about_us" />
        <item
            android:id="@+id/pnav_feedback"
            android:icon="@drawable/feedback"
            android:title="@string/feedback"
            android:visible="false"/>
        <item
            android:id="@+id/nav_privacy_policy"
            android:icon="@drawable/privacy"
            android:title="@string/privacy_policy" />
        <item
            android:id="@+id/pnav_faq"
            android:icon="@drawable/faq"
            android:visible="false"
            android:title="@string/faq" />
        <item
            android:id="@+id/pnav_contact_us"
            android:icon="@drawable/contactus"
            android:title="@string/contact_us" />

    </group>

    <group android:checkableBehavior="single"
        android:id="@+id/bottom_menu">
        <item
            android:id="@+id/pnav_sign_out"
            android:icon="@drawable/signout"
            android:title="@string/sign_out" />
    </group>



</menu>

而要获取点击事件,请使用以下代码:

 NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(yourItemclickListener);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接