布局如下 :
我在ConstraintLayout布局里添加了一张背景图(1080*1400),希望它铺满屏幕,但遇到2个问题:
1.如果我不向ConstraintLayout布局内部添加任何组件,背景不显示
2.我发现背景图的显示高度跟随着我的ImageView设置的布局高度一起变化,如果我设置,导致我的背景图不能正常显示
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView 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:layout_gravity="fill_vertical"
android:layout_marginBottom="?attr/actionBarSize"
android:orientation="vertical"
tools:context=".ui.home.HomeFragment"
tools:ignore="SpeakableTextPresentCheck">
<!-- -->
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="1400dp"
android:background="@drawable/home_page"
tools:context=".ui.home.HomeFragment"
>
<ImageView
android:id="@+id/imageView3"
android:layout_width="20dp"
android:layout_height="30dp"
android:src="@drawable/next"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
我的解决方案:
在ConstraintLayout布局内又加了一层布局,虽然解决了问题。但是不理解什么导致的,是否有更好的解决方法而省去这层嵌套
以下回答参考GPT并且由Bony-整理:
您可以将ConstraintLayout的高度设置为wrap_content
,并将background设置为scaleType="fitXY"
,这样背景图就可以铺满整个布局,并且不会受到子视图布局高度的影响。这样您就不需要添加额外的嵌套布局。
以下是示例代码:
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/home_page"
android:scaleType="fitXY">
<!-- Your views here -->
</androidx.constraintlayout.widget.ConstraintLayout>
注意:如果您的背景图比设备的屏幕尺寸小,则可能会出现拉伸或模糊的情况。您可以将背景图放大或缩小,或者选择不使用铺满整个布局的背景图。
layout_constraintHorizontal_bias
layout_constraintVertical_bias