Рисование всплывающей подсказки с рамкой - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь получить всплывающую подсказку, похожую на эту (ну, не совсем, просто часть, где я хочу иметь гладкую границу):

enter image description here

Пока что я попробовал:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:gravity="top|right">

        <rotate android:fromDegrees="45" android:toDegrees="0"
            android:pivotX="50%" android:pivotY="0%" >
            <shape android:shape="rectangle">
                <size android:width="24dp" android:height="24dp" />
                <stroke android:color="@android:color/holo_blue_bright" android:width="1dp"/>
            </shape>
        </rotate>
    </item>
    <item>
        <shape android:shape="rectangle">
            <size android:width="206dp" android:height="76dp" />
            <solid android:color="@color/white"/>
            <stroke android:color="@android:color/holo_blue_bright"  android:width="1dp"/>
            <corners android:radius="2dp" />
        </shape>
    </item>

    <item android:gravity="top|right">
        <rotate android:fromDegrees="45" android:toDegrees="0"
            android:pivotX="50%" android:pivotY="0%" >
            <shape android:shape="rectangle">
                <size android:width="24dp" android:height="24dp" />
                <solid android:color="@color/white"/>
            </shape>

        </rotate>
    </item>

</layer-list>

Вот мой вывод:

enter image description here

Ответы [ 2 ]

0 голосов
/ 10 марта 2019

Вы должны просто использовать 9-патч.В Android Studio выберите «создать файл 9-патчей»:

enter image description here

Затем установите левую и верхнюю метки для частей, которые вы хотите дублировать.больше / меньше у вас есть изображение.

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

Во многих случаях это одни и те же области.но в вашем случае, я думаю, что это не так.

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

Вы можете узнать больше об этом в документации:

0 голосов
/ 26 июня 2018

У меня что-то работает, хотя и не идеально. Вот вывод:

enter image description here Обратите внимание, что края не очень гладкие. Вот модифицированный код:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:gravity="top|right" android:right="10dp">
        <rotate android:fromDegrees="45" android:toDegrees="0"
            android:pivotX="50%" android:pivotY="0%" >
            <shape android:shape="rectangle">
                <size android:width="24dp" android:height="24dp" />
                <stroke android:color="@android:color/holo_blue_bright" android:width="1dp"/>
            </shape>
        </rotate>
    </item>
    <item>
        <shape android:shape="rectangle">
            <size android:width="206dp" android:height="76dp" />
            <solid android:color="@color/white"/>
            <stroke android:color="@android:color/holo_blue_bright"  android:width="1dp"/>
            <corners android:radius="2dp" />
        </shape>
    </item>

    <item android:gravity="top|right" android:right="10dp" android:top="1dp">
        <rotate android:fromDegrees="45" android:toDegrees="0"
            android:pivotX="50%" android:pivotY="0%" >
            <shape android:shape="rectangle">
                <size android:width="24dp" android:height="24dp" />
                <solid android:color="@color/white"/>
            </shape>

        </rotate>
    </item>

</layer-list>
...