如何使用 header 滚动使 android 导航抽屉 scroll-able
How to make android navigation drawer scroll-able with header Scroll
我想制作一个自定义导航抽屉,我希望它是 scroll-able。
这是我的布局。我以不同的方式尝试过。
但它只滚动列表项而不是 header 。那么我怎样才能让它成为整个导航抽屉(包括 header )scroll-able.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|enterAlways"
android:background="@drawable/bg_parent_rounded_corner"
tools:context="com.ajkerdeal.app.Fragments.HomeCategoryFragment"
android:weightSum="1">
<LinearLayout
app:layout_scrollFlags="scroll|enterAlways"
android:id="@+id/line1"
android:layout_width="match_parent"
android:layout_height="160dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@drawable/splash_background3"
android:gravity="bottom"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<com.pkmmte.view.CircularImageView
android:id="@+id/imageView"
android:layout_width="70dp"
android:layout_height="70dp"
android:src="@drawable/sample_portrait"
app:border="true"
app:border_color="#EEEEEE"
app:border_width="4dp"
app:shadow="true" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="Ehsanul Hauque"
android:textColor="#000000"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView
android:textColor="#000000"
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ehsan@gmail.com" />
</LinearLayout>
<TextView
android:background="#D8D8D8"
android:gravity="center_vertical"
android:paddingLeft="20dp"
android:layout_width="409dp"
android:layout_height="wrap_content"
android:text="হোম"
android:textStyle="bold"
android:id="@+id/textView2"
/>
<LinearLayout
app:layout_scrollFlags="scroll|enterAlways"
android:paddingTop="178dp"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:weightSum="1">
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view_from_homecategoryfragment"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:onClick="viewClick"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPostalAddress"
android:ems="10"
android:id="@+id/editText" />
</LinearLayout>
</RelativeLayout>
您可以通过两个选项使抽屉式导航栏可滚动。
1.You 可以将所有内容都放在 ScrollView 中,这样整个页面就会根据设备开始滚动 size.So 只需使用 ScrollView 作为根 layout.I 我在下面发布了一个演示代码.
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/login_bg"
android:fitsSystemWindows="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/login_bg"
android:orientation="vertical"
android:padding="35dp"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"/>
2.Or您可以根据需要使用 ListView 或 RecyclerView 使内容部分滚动。
但由于您希望整个页面滚动,包括页眉部分,我建议您遵循第一个 option.Hope 会有帮助。
将您的全部内容放入 scrollview
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RelativeLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_parent_rounded_corner"
android:orientation="vertical"
android:weightSum="1"
app:layout_scrollFlags="scroll|enterAlways"
tools:context="com.ajkerdeal.app.Fragments.HomeCategoryFragment">
<LinearLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/line1"
android:layout_width="match_parent"
android:layout_height="160dp"
android:background="@drawable/splash_background3"
android:gravity="bottom"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
app:layout_scrollFlags="scroll|enterAlways">
<com.pkmmte.view.CircularImageView
android:id="@+id/imageView"
android:layout_width="70dp"
android:layout_height="70dp"
android:src="@drawable/sample_portrait"
app:border="true"
app:border_color="#EEEEEE"
app:border_width="4dp"
app:shadow="true" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="Ehsanul Hauque"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:textColor="#000000" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ehsan@gmail.com"
android:textColor="#000000" />
</LinearLayout>
<TextView
android:id="@+id/textView2"
android:layout_width="409dp"
android:layout_height="wrap_content"
android:background="#D8D8D8"
android:gravity="center_vertical"
android:paddingLeft="20dp"
android:text="হোম"
android:textStyle="bold" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:orientation="vertical"
android:paddingTop="178dp"
android:weightSum="1"
app:layout_scrollFlags="scroll|enterAlways">
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view_from_homecategoryfragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:onClick="viewClick"
android:scrollbars="vertical" />
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPostalAddress" />
</LinearLayout>
</RelativeLayout>
</ScrollView>
将此添加到您的 NavigationView XML 文件
android:scrollbarAlwaysDrawVerticalTrack="true";
我想制作一个自定义导航抽屉,我希望它是 scroll-able。
这是我的布局。我以不同的方式尝试过。 但它只滚动列表项而不是 header 。那么我怎样才能让它成为整个导航抽屉(包括 header )scroll-able.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|enterAlways"
android:background="@drawable/bg_parent_rounded_corner"
tools:context="com.ajkerdeal.app.Fragments.HomeCategoryFragment"
android:weightSum="1">
<LinearLayout
app:layout_scrollFlags="scroll|enterAlways"
android:id="@+id/line1"
android:layout_width="match_parent"
android:layout_height="160dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@drawable/splash_background3"
android:gravity="bottom"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<com.pkmmte.view.CircularImageView
android:id="@+id/imageView"
android:layout_width="70dp"
android:layout_height="70dp"
android:src="@drawable/sample_portrait"
app:border="true"
app:border_color="#EEEEEE"
app:border_width="4dp"
app:shadow="true" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="Ehsanul Hauque"
android:textColor="#000000"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView
android:textColor="#000000"
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ehsan@gmail.com" />
</LinearLayout>
<TextView
android:background="#D8D8D8"
android:gravity="center_vertical"
android:paddingLeft="20dp"
android:layout_width="409dp"
android:layout_height="wrap_content"
android:text="হোম"
android:textStyle="bold"
android:id="@+id/textView2"
/>
<LinearLayout
app:layout_scrollFlags="scroll|enterAlways"
android:paddingTop="178dp"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:weightSum="1">
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view_from_homecategoryfragment"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:onClick="viewClick"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPostalAddress"
android:ems="10"
android:id="@+id/editText" />
</LinearLayout>
</RelativeLayout>
您可以通过两个选项使抽屉式导航栏可滚动。
1.You 可以将所有内容都放在 ScrollView 中,这样整个页面就会根据设备开始滚动 size.So 只需使用 ScrollView 作为根 layout.I 我在下面发布了一个演示代码.
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/login_bg"
android:fitsSystemWindows="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/login_bg"
android:orientation="vertical"
android:padding="35dp"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"/>
2.Or您可以根据需要使用 ListView 或 RecyclerView 使内容部分滚动。
但由于您希望整个页面滚动,包括页眉部分,我建议您遵循第一个 option.Hope 会有帮助。
将您的全部内容放入 scrollview
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RelativeLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_parent_rounded_corner"
android:orientation="vertical"
android:weightSum="1"
app:layout_scrollFlags="scroll|enterAlways"
tools:context="com.ajkerdeal.app.Fragments.HomeCategoryFragment">
<LinearLayout
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/line1"
android:layout_width="match_parent"
android:layout_height="160dp"
android:background="@drawable/splash_background3"
android:gravity="bottom"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
app:layout_scrollFlags="scroll|enterAlways">
<com.pkmmte.view.CircularImageView
android:id="@+id/imageView"
android:layout_width="70dp"
android:layout_height="70dp"
android:src="@drawable/sample_portrait"
app:border="true"
app:border_color="#EEEEEE"
app:border_width="4dp"
app:shadow="true" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="Ehsanul Hauque"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:textColor="#000000" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ehsan@gmail.com"
android:textColor="#000000" />
</LinearLayout>
<TextView
android:id="@+id/textView2"
android:layout_width="409dp"
android:layout_height="wrap_content"
android:background="#D8D8D8"
android:gravity="center_vertical"
android:paddingLeft="20dp"
android:text="হোম"
android:textStyle="bold" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:orientation="vertical"
android:paddingTop="178dp"
android:weightSum="1"
app:layout_scrollFlags="scroll|enterAlways">
<android.support.v7.widget.RecyclerView
android:id="@+id/my_recycler_view_from_homecategoryfragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
android:onClick="viewClick"
android:scrollbars="vertical" />
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPostalAddress" />
</LinearLayout>
</RelativeLayout>
</ScrollView>
将此添加到您的 NavigationView XML 文件
android:scrollbarAlwaysDrawVerticalTrack="true";