Ширина тире варьируется на разных мобильных устройствах в Android - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь отобразить границы, например, 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" />

и drawable 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>

и в Activity

            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)

здесь я принимаю общую пропускную способность как200f, но он работает на некоторых мобильных телефонах, я не понимаю, почему?

, поэтому, если у кого-то есть идея, пожалуйста, дайте мне знать, как это исправить. Спасибо в сообщении

1 Ответ

0 голосов
/ 22 мая 2018

Да, потому что setStroke применяет тире в пикселях, а не в dp.Таким образом, это будет зависеть от разрешения экрана.

Вы можете получить нужное количество пикселей программно в зависимости от разрешения экрана, чтобы получить одинаковый результат для всех размеров экрана.

...