繁体   English   中英

Glide - 圆角大小不同

[英]Glide - Rounded Corner size different

我想在对话框中制作 4dp 圆顶角图像。

在此处输入图像描述

但是当我给 4dp(更改为像素)时,imgae 是这样制作的。

在此处输入图像描述

底角是可绘制的背景。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <solid android:color="@android:color/white" />

    <corners
        android:bottomRightRadius="4dp" />

</shape>
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <solid android:color="@android:color/white" />

    <corners
        android:bottomLeftRadius="4dp" />

</shape>

我试过这样的代码。 请帮帮我

    private fun initView() {
        val dm = ctx.resources.displayMetrics
        val width = dm.widthPixels - 60
        val radius = dpToPx(4).toFloat()

        window?.run {
            setLayout(width, ViewGroup.LayoutParams.WRAP_CONTENT)
            setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
        }

        Glide.with(ctx)
            .load(quizNoticeImage)
            .transform(GranularRoundedCorners(radius, radius, 0f, 0f))
            .listener(object : RequestListener<Drawable> {
                override fun onLoadFailed(
                    e: GlideException?,
                    model: Any?,
                    target: Target<Drawable>?,
                    isFirstResource: Boolean
                ): Boolean {
                    noShowAgain()
                    return false
                }

                override fun onResourceReady(
                    resource: Drawable?,
                    model: Any?,
                    target: Target<Drawable>?,
                    dataSource: DataSource?,
                    isFirstResource: Boolean
                ): Boolean {
                    vBarHorizontal.visible()
                    vBarVertical.visible()
                    tvNoShowAgain.visible()
                    tvClose.visible()
                    return false
                }
            })
            .into(ivQuiz)

        ivQuiz.setOnClickListener(this)
        tvNoShowAgain.setOnClickListener(this)
        tvClose.setOnClickListener(this)
    }

我试过 glide - overide、shapable imgae 等,但我做不到。 第一张图片是12dp(换成像素)

您应该尝试像这样定义 alertDialog:

val alertDialog : AlertDialog =  MaterialAlertDialogBuilder(this, R.style.MyRounded_MaterialComponents_MaterialAlertDialog)  // for fragment you can use getActivity() instead of this

和这样的风格:

<style name="MyRounded.MaterialComponents.MaterialAlertDialog" 
    parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">

    <item name="shapeAppearanceOverlay">
        @style/ShapeAppearanceOverlay.App.CustomDialog.Rounded
    </item>
    <item name="colorSurface">
        @color/YOUR_COLOR
    </item>
</style>

<style name="ShapeAppearanceOverlay.App.CustomDialog.Rounded" parent="">
    <item name="cornerFamily">
        rounded
    </item>
    <item name="cornerSize">
        4dp
    </item>
</style>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM