【问题标题】:Drawing a tooltip with a border绘制带边框的工具提示
【发布时间】:2018-06-26 06:40:42
【问题描述】:

我正在尝试实现这样的带边框工具提示(不完全是,只是我想要平滑边框的部分):

到目前为止,这是我尝试过的:

<?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>

这是我的输出:

【问题讨论】:

  • 是否有可能在某个地方为此绘制 9 个补丁?
  • 在你硬盘上的SDK资源中,实际上有一些9个补丁形式的气球。搜索popup_inline_error*.9.png。我发现的都是粉红色的。但可以在 Gimp 中轻松编辑。或者通过谷歌搜索找到新的(可能还没有 9 个补丁 - 可能需要一些努力)。

标签: android android-xml android-drawable


【解决方案1】:

我得到了一些工作,虽然它并不完美。这是输出:

注意边缘不是很光滑。这是修改后的代码:

<?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>

【讨论】:

  • 我会用 9 补丁,如果将来有人需要,我想分享这个解决方案。
【解决方案2】:

您应该只使用 9-patch。在 Android Studio 上,选择“create 9-patch file”:

然后,为您想要复制的部分的左侧和顶部标记更大/更小的图像。

并为您希望包含内容的部分设置右侧和底部标记。

在许多情况下,这些是相同的区域。但就你而言,我认为不会是这样。

我还建议使图像尽可能小,以便它采用您允许的最小尺寸。这样会节省一点空间。

您可以阅读有关文档的更多信息:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 2011-11-01
    • 2020-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多