android - 短划线宽度在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,但它适用于某些手机,我不明白为什么?
所以如果有人有想法,请让我知道如何解决这个问题,谢谢
解决方案
是的,因为setStroke
在像素中应用了破折号间隙,而不是在 dp 中。因此,这将取决于屏幕分辨率。
您可以根据屏幕分辨率以编程方式获得正确数量的像素,以便为所有屏幕尺寸获得相同的结果。
推荐阅读
- go - 戈朗 | 如何在单个 if 语句中检查多个布尔值是否为真?
- html - 如何将渐变颜色应用于 svg 路径
- excel - VBA 函数语法
- rhel8 - Redhat Codeready Container 无法启动(crc 启动错误):.crcbundle 未找到
- flutter - Flutter:应该初始化字段“initScreen”,因为它的类型“int”不允许为空。int 初始化屏幕;
- java - 如何使用嵌套循环打印乘法表?
- c# - 尝试从文本框中解析多行
- node.js - 如何修复我的删除按钮?Reactjs、MondogDB 和 Nodejs
- profiling - JFR ExecutionSample 与 ThreadDump
- c - 判断 OpenSSL 是否使用 CPU SHA256 指令