首页 > 解决方案 > 短划线宽度在android中的不同手机上有所不同

问题描述

我正在尝试显示像whatsapp这样的边框,因此我使用了破折号宽度和破折号间隙,它们正在工作,但它的移动设备不同。我从早上开始一直在尝试,但我没有得到相关的答案。这是我的代码: myxml :

    <ImageView
    android:id="@+id/image_story"
    android:layout_width="55dp"
    android:layout_height="55dp"
    android:background="@drawable/border"
    android:padding="3dp"
    android:src="@drawable/default" />

和可绘制的border.xml:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
android:useLevel="true">
<stroke
    android:width="5dp"
    android:color="#f62b16"
    android:dashGap="10dp"
    android:dashWidth="200dp" />
<padding
    android:bottom="2dp"
    android:left="2dp"
    android:right="2dp"
    android:top="2dp" />
<corners android:radius="30dp" /></shape>

在活动中

            var dashWidth: Float = 200f
        var dashGap: Float = 0f
        if(posts.size > 1) {
            dashWidth = dashWidth / posts.size
            dashGap = 10f
        }

        var drawable = image_story.getBackground() as GradientDrawable
        drawable.setStroke(5, Color.parseColor("#000000"), dashWidth, dashGap)

在这里,我将总 dashwidth 设为 200f,但它适用于某些手机,我不明白为什么?

所以如果有人有想法,请让我知道如何解决这个问题,谢谢

标签: androidborder

解决方案


是的,因为setStroke在像素中应用了破折号间隙,而不是在 dp 中。因此,这将取决于屏幕分辨率。

您可以根据屏幕分辨率以编程方式获得正确数量的像素,以便为所有屏幕尺寸获得相同的结果。


推荐阅读