dome:https://github.com/linliangliang/sidebar
一、使用sideingMenu结合fragment实现。
二、使用NavigationView和DrawerLayout实现。
第一种实现方式:https://mp.csdn.net/postedit/84612432
1、下面介绍使用NavigationView,DrawerLayout的方式实现侧边栏。
gradle配置:版本根据自己的targetSdkVersion:26写。
compile 'com.android.support:design:26.0.0'
implementation 'com.android.support:appcompat-v7:26.0.0'
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">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/main_content"
android:layout_width="368dp"
android:layout_height="551dp"
tools:layout_editor_absoluteX="8dp"
tools:layout_editor_absoluteY="8dp">
<FrameLayout
android:id="@+id/frame_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/appbar"
android:elevation="5dp"
android:scrollbars="none"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="left"
app:headerLayout="@layout/head"
app:menu="@menu/new_menu"></android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
其中app:headerLayout="@layout/head" app:menu="@menu/new_menu"
需要两个文件1、head.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#03A9F4"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/person"
android:layout_width="72dp"
android:layout_height="72dp"
android:layout_marginTop="42dp"
android:src="@mipmap/usericon_32" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="你的名字"
android:textColor="#ffffff"
android:textSize="20sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="18dp"
android:layout_marginTop="12dp"
android:text="简介:生容易、活容易、生活不容易!"
android:textColor="#ffffff"
android:textSize="16sp" />
</LinearLayout>
2、在res文件夹下面新建一个menu文件夹,文件夹中新建一个new_menu.xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/favorite"
android:checkable="true"
android:icon="@mipmap/usericon_32"
android:title="社区" />
</group>
<item
android:id="@+id/wallet"
android:icon="@mipmap/usericon_32"
android:title="问答" />
<item
android:id="@+id/photo"
android:icon="@mipmap/usericon_32"
android:title="我的" />
<item
android:id="@+id/dress"
android:icon="@mipmap/usericon_32"
android:title="设置" />
</menu>
其中涉及的图片自己添加。
修改androidmanifest.xml文件中的样式属性:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme.NoActionBar">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
其中 AppTheme.NoActionBar需要在style中新建一个样式:AppTheme.NoActionBar
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
</resources>