将位图设置为背景并裁剪它

Set a bitmap as background and crop it

我正在尝试将位图图像设置为 FrameLayout 的背景。

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

    <ImageView
        android:id="@+id/background"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"/>

    <LinearLayout
        android:id="@+id/game_list_header_cnt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:orientation="vertical">

        <TextView
            android:id="@+id/game_list_header_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />
        <TextView
            android:id="@+id/game_list_header_sub_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            />

    </LinearLayout>
</FrameLayout>

这个问题是我想设置为背景的图像的高度大于两个 TextView 的高度,所以 game_list_header 的高度不适合 TextView 的高度但是ImageView 高度。

我尝试了不同的方法,例如将位图用作带有 gravity=clip_vertical|fill_horizontal 的 DrawableBitmap,但即使那样,图像的高度也不适合 TextView 的高度,导致 FrameLayout 大于我想。

FrameLayout 的高度设置为,可能是 40dp。由于您已将 FrameLayout 的高度设置为 wrap_content,因此 XML 也会考虑图像的高度。

您试过将图片设置为game_list_header_cnt的背景吗?

如果这没有帮助,您可以简单地使用 ConstraintLayout 并制作 imageView top_top 顶部 textViewbot_bot 机器人 textView

TextView

layout_height设置为wrap_content,所以TextView的实际高度由TextView的textsize决定。

可以设置layout_height of FrameLayout一个数字,比如80dp,设置layout_height of LinearLayoutmatch_parent