【问题标题】:See navigation drawer preview查看导航抽屉预览
【发布时间】:2015-03-31 12:38:08
【问题描述】:

我正在 Android Studio 中设计一个原生导航抽屉。 我在预览中看不到抽屉,因为它位于活动的左侧,超出了预览范围。 现在我使用 testlayout.xml 文件来查看我的更改,但很多时候我忘记将它们复制粘贴到正确的活动中。 有没有办法预览抽屉布局?

【问题讨论】:

标签: android android-studio navigation-drawer preview drawerlayout


【解决方案1】:

如果您希望能够预览抽屉布局/导航栏

如果您正在关注https://developer.android.com/training/implementing-navigation/nav-drawer.html 上的教程

您可以将导航抽屉的列表视图放在 /layout 文件夹中的不同 xml 文件中,然后将其包含在抽屉布局 xml 中。意味着您可以在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>
【解决方案2】:

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

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

然后添加属性tools:openDrawer等于你的Navigation view的layout_gravity值的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>

【讨论】:

    【解决方案3】:
    <?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"
    

    【讨论】:

      【解决方案4】:

      您可以使用 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>
      

      在navigationmenu.xml中定义菜单,放在菜单资源文件夹中:-

      <?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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-16
        • 1970-01-01
        • 2019-09-10
        • 2021-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多