在 Kotlin 中制作壁纸应用程序。似乎无法获得适合用户屏幕的墙纸

Making a wallpaper app in Kotlin. Can't seem to get the wallpaper to fit the user screen

我正在制作壁纸应用程序。我正在从我的 firebase 数据库中获取图像。但是当我在我的应用程序中点击设置为墙纸按钮时,墙纸在顶部和底部留下一些空的黑色 space。即使在 Whosebug 上尝试了不同的类似答案后似乎也无法正常工作。

我的壁纸集activity:

import android.app.WallpaperManager
import android.content.Context
import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.Point
import android.graphics.Rect
import android.os.Build
import android.os.Bundle
import android.view.WindowManager
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.drawToBitmap
import com.squareup.picasso.Picasso
import kotlinx.android.synthetic.main.activity_set_wallpaper.*
import java.io.IOException


class SetWallpaperActivity : AppCompatActivity() {
        var image: String?=null
    @RequiresApi(Build.VERSION_CODES.N)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_set_wallpaper)

        val intent=intent
        image=intent.getStringExtra("image")
        Picasso.get().load(intent.getStringExtra("image")).into(image_set_wallpaper)
        val wm = this.getSystemService(Context.WINDOW_SERVICE) as WindowManager
        val display = wm.defaultDisplay
        val size = Point()
        display.getSize(size)

        val height: Int = size.y
        val width: Int = size.x

        set_wallpaper.setOnClickListener {
            val result:Bitmap=rl_iv.drawToBitmap()

            val wallpaperManager = WallpaperManager.getInstance(this)

            try {
                wallpaperManager.setBitmap(result)
                }
            catch (ex: IOException) {
                ex.printStackTrace()

            }

        }
        set_lock_wallpaper.setOnClickListener {
            val wpManager = WallpaperManager.getInstance(this)
            val myBitmap: Bitmap = rl_iv.drawToBitmap()
            try {
                wpManager.setBitmap(myBitmap, null, true, WallpaperManager.FLAG_LOCK)
            }
            catch (ex: IOException) {
                ex.printStackTrace()

            }
        }

    }
}

它的xml代码是

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context=".SetWallpaperActivity">

    <RelativeLayout
        android:id="@+id/rl_iv"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <ImageView
        android:id="@+id/image_set_wallpaper"
        android:layout_width="match_parent"
        android:scaleType="fitXY"
        android:layout_height="match_parent"
        android:layout_marginBottom="20dp"
        android:layout_marginTop="20dp"/>

    </RelativeLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="20dp"
        android:orientation="horizontal">

    <Button
        android:id="@+id/set_wallpaper"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="SET as HOME SCREEN WALLPAPER"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="20dp"
        android:background="@drawable/shape_button_rounded"
        android:focusableInTouchMode="true"
        android:gravity="center"/>

    <Button
        android:id="@+id/set_lock_wallpaper"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="SET as LOCK SCREEN WALLPAPER"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@id/set_wallpaper"
        android:background="@drawable/shape_button_rounded"
        android:focusableInTouchMode="true"
        android:layout_marginBottom="20dp"
        android:gravity="center"/>

    </LinearLayout>

</RelativeLayout>

请建议我应该在我的代码中编辑什么才能让它工作。我是新来的。请用Kotlin解释

由于 XML 文件中的边距,您得到黑色 space。

 <ImageView
        android:id="@+id/image_set_wallpaper"
        android:layout_width="match_parent"
        android:scaleType="fitXY"
        android:layout_height="match_parent"
        android:layout_marginBottom="20dp"
        android:layout_marginTop="20dp"/>

删除 ImageView 属性中的 layout_margin-xx- 以获得所需的输出。

您在 XML 文件中的 ImageView 应该是这样的:

 <ImageView
        android:id="@+id/image_set_wallpaper"
        android:layout_width="match_parent"
        android:scaleType="fitXY"
        android:layout_height="match_parent"/>

这应该可以解决您的问题。