我正在尝试使用自定义工具栏开发一个应用程序,它与屏幕上的其他内容重叠。我有一个回收器视图,我用它来显示带有文本的卡片视图。
在设计视图中,它似乎没有问题,并显示回收器视图在工具栏下方,并且没有阻碍。
Android Studio Design视图显示工具栏不妨碍回收器视图。
然而,当启动应用程序时,它明显重叠。
应用程序启动,内容隐藏在工具栏后面。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:paddingLeft="8dp"
android:paddingRight="8dp">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/toolbar"
app:layout_constraintTop_toBottomOf="@id/toolbar"
android:background="@android:color/darker_gray"
android:padding="4dp"
android:scrollbars="vertical"
/>
</RelativeLayout>
toolbar.xml
<androidx.appcompat.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/purple_200"
android:elevation="4dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:id="@+id/back_icon"
android:src="@drawable/ic_baseline_arrow_back_24" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_toEndOf="@id/back_icon"
android:layout_centerVertical="true"
android:text="@string/inventory_menu"
android:textSize="20sp"
android:textColor="@color/white"/>
<ImageView
android:id="@+id/add_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toStartOf="@id/delete_icon"
android:layout_marginEnd="30dp"
android:src="@drawable/ic_baseline_add_circle_outline_24" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentEnd="true"
android:id="@+id/delete_icon"
android:src="@drawable/ic_baseline_delete_24"/>
</RelativeLayout>
</androidx.appcompat.widget.Toolbar>
example_item.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:cardCornerRadius="4dp"
android:layout_marginBottom="4dp">
<RelativeLayout
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="4dp">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Line1"
android:textSize="20sp"
android:textStyle="bold"
android:textColor="@android:color/black"
android:layout_alignParentTop="true" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Line 2"
android:textSize="15sp"
android:layout_below="@+id/textView"
android:layout_marginStart="8dp"/>
</RelativeLayout>
</androidx.cardview.widget.CardView>enter code here
您可以尝试使用CoordinatorLayout
而不是RelativeLayout
作为父级。看看这个教程。
随着ConstraintLayout
的释放,你不应该使用RelativeLayout
,因为它更慢,能力更弱。
注意:CoordinatorLayout
和ConstraintLayout
不是一回事,有非常不同的用例。