我正在使用带有可展开列表视图的导航视图。我正在以编程方式添加标题布局。但它从顶部切断了。如果我给标题布局高度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>
答案 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"
/>