导航标题布局从顶部截止

时间:2016-05-14 08:21:11

标签: android navigation-drawer

我正在使用带有可展开列表视图的导航视图。我正在以编程方式添加标题布局。但它从顶部切断了。如果我给标题布局高度240dp看起来不错,但在较低版本它需要很高的高度。继承我的标题布局xml,我正在膨胀可扩展列表视图的标题。

navigation_header

<?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="wrap_content"
              android:background="@color/colorPrimary"
              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"
    >

    <com.lib.CircleImageView
        android:id="@+id/imageViewHeaderPerson"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:paddingTop="@dimen/nav_header_vertical_spacing"
        android:src="@android:drawable/sym_def_app_icon"/>

    <TextView
        android:id="@+id/textViewName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="@dimen/nav_header_vertical_spacing"
        android:text="Android Studio"
        android:textAppearance="@style/TextAppearance.AppCompat.Subhead"
        android:textColor="@color/DEFAULT"/>

    <TextView
        android:id="@+id/textViewCode"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@style/Base.TextAppearance.AppCompat.Body1"
        android:text="heelo"
        android:textColor="@color/DEFAULT"/>

</LinearLayout>

我的导航布局有抽屉

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
           />

    </LinearLayout>
    <android.support.design.widget.NavigationView
        android:id="@+id/navigation_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        >
    <ExpandableListView
        android:groupIndicator="@null"
        android:id="@+id/left_drawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/white"
        android:headerDividersEnabled="false"
        android:childDivider="#00000000"


       />
    </android.support.design.widget.NavigationView>

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

4 个答案:

答案 0 :(得分:19)

添加您的NavigationView android:fitsSystemWindows="false"

答案 1 :(得分:1)

我将 android:fitsSystemWindows="false" 属性添加到 <com.google.android.material.navigation.NavigationView> 内的 <androidx.drawerlayout.widget.DrawerLayout>

然后手动添加一些填充或边距到 <com.google.android.material.navigation.NavigationView> 以正确调整标题位置。

现在标题在“Notched”和“Non-Notched”显示中保持在同一位置。

答案 2 :(得分:0)

我用这个来解决这个问题。感谢您在toobar下方设置导航视图的评论。

   // Calculate ActionBar height
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            TypedValue tv = new TypedValue();
            int actionBarHeight = 0;

            if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) {
                actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, getResources()
                        .getDisplayMetrics());
            }
            ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams) expandableListView
                    .getLayoutParams();

            mlp.setMargins(0, actionBarHeight, 0, 0);
            expandableListView.setLayoutParams(mlp);
        }

答案 3 :(得分:0)

在布局中添加操作栏大小的上边距,例如

<ExpandableListView
    android:groupIndicator="@null"
    android:id="@+id/left_drawer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    android:headerDividersEnabled="false"
    android:layout_marginTop="?attr/actionBarSize"
    android:childDivider="#00000000"
   />