Toolbar遮挡RelativeLayout问题求助:布局约束调整无效
解决Toolbar遮挡RelativeLayout的问题
看了你的布局代码和问题描述,核心问题出在错误的布局约束混用和冗余属性上,我帮你梳理并修复这些问题:
1. 关键问题分析
- 你的父布局是
ConstraintLayout,但给RelativeLayout2加了android:layout_below="@id/toolbar"——这是RelativeLayout专属属性,在ConstraintLayout里完全无效,直接删掉就行。 app:layout_constraintStart_toEndOf="@id/toolbar"这个约束大错特错:Toolbar是match_parent宽度,会把RelativeLayout2的左边缘推到屏幕外,直接改成app:layout_constraintStart_toStartOf="parent"让它对齐父布局左边缘。- 你同时设置了
android:layout_marginTop="80dp"和app:layout_constraintTop_toBottomOf="@id/toolbar",这会让RelativeLayout2在Toolbar下方再额外偏移80dp,如果你想让它紧挨着Toolbar,去掉这个大数值的marginTop即可;需要间距的话改成16dp这类合理值。 - 最后一个
Button的代码没写完,补全属性避免编译错误。
2. 修改后的完整布局代码
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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="@color/colorBackground" tools:context="husforbi.com.accenture.husforbi.HomeActivity"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/colorPrimaryDark" android:elevation="4dp" android:theme="@style/ThemeOverlay.AppCompat.ActionBar"/> <RelativeLayout android:id="@+id/relativeLayout2" android:layout_width="match_parent" android:layout_height="105dp" android:layout_marginHorizontal="8dp" android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:background="@color/colorPrimary" app:layout_constraintBottom_toTopOf="@+id/relativeLayout" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/toolbar"> <ImageView android:id="@+id/imageView2" android:layout_width="100dp" android:layout_height="100dp" android:layout_alignParentStart="true" android:layout_centerVertical="true" app:srcCompat="@mipmap/ic_launcher_round" /> <TextView android:id="@+id/sellername" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginStart="14dp" android:layout_toEndOf="@+id/imageView2" android:textColor="@color/colorPrimaryDark" android:textSize="18sp" /> <TextView android:id="@+id/sellerid" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignStart="@+id/sellername" android:layout_below="@+id/sellername" android:textColor="@color/colorPrimaryDark" /> </RelativeLayout> <RelativeLayout android:id="@+id/relativeLayout" android:layout_width="match_parent" android:layout_height="154dp" android:layout_marginHorizontal="8dp" android:layout_marginTop="8dp" android:background="@color/colorPrimary" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/relativeLayout2"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_alignParentTop="true" android:layout_marginHorizontal="8dp" android:layout_marginTop="8dp" android:orientation="horizontal"> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/Newspaper_tag" android:textColor="@color/colorPrimaryDark" android:textSize="18sp" /> <TextView android:id="@+id/newsCount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:textAlignment="textEnd" android:textColor="@color/colorPrimaryDark" android:textSize="18sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="8dp" android:layout_marginTop="50dp" android:orientation="horizontal"> <TextView android:id="@+id/textView6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/Calendar_tag" android:textColor="@color/colorPrimaryDark" android:textSize="18sp" /> <TextView android:id="@+id/calCount" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:textAlignment="textEnd" android:textColor="@color/colorPrimaryDark" android:textSize="18sp" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="horizontal"> <Button android:id="@+id/suggest" android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="1" android:background="@android:color/holo_blue_light" android:text="@string/Fix_tag" android:textColor="@android:color/background_light" /> <Button android:id="@+id/rate" android:layout_width="0dp" android:layout_height="50dp" android:layout_weight="1" android:background="@android:color/holo_blue_light" android:text="@string/Rate_tag" android:textColor="@android:color/background_light" /> </LinearLayout> </RelativeLayout> </android.support.constraint.ConstraintLayout>
额外小建议
- 尽量统一用
ConstraintLayout的约束布局,别混用不同布局的属性,这样代码更易维护。 - 用
layout_marginHorizontal代替同时写layout_marginStart和layout_marginEnd,代码更简洁。
内容的提问来源于stack exchange,提问作者Maja Okholm
相关产品推荐
相关产品推荐

