保持笔划内的波纹

Posted

技术标签:

【中文标题】保持笔划内的波纹【英文标题】:Keep ripple within stroke 【发布时间】:2015-08-24 01:58:32 【问题描述】:

我正在尝试为带有笔划的Button 创建一个ripple 背景drawable

这是我目前所拥有的:

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="#336699">

    <item>
        <shape android:shape="rectangle">

            <solid android:color="#998811" />

            <stroke
                android:
                android:color="#119988" />

        </shape>
    </item>
</ripple>

但使用此解决方案,波纹与我的笔划重叠。 我只想要笔划内的ripple,我该怎么做?

【问题讨论】:

【参考方案1】:

根据the documentation,您添加另一个 ID 为 @android:id/mask 的项目 - 这将限制涟漪的去向。您可以将其设置为插入,如下所示:

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="#336699">

    <item>
        <shape android:shape="rectangle">

            <solid android:color="#998811" />

            <stroke
                android:
                android:color="#119988" />

        </shape>
    </item>

    <item android:id="@android:id/mask">
        <inset android:insetBottom="2dp"
               android:insetLeft="2dp" 
               android:insetRight="2dp"
               android:insetTop="2dp">
            <shape android:shape="rectangle">
                <!-- Color doesn't matter -->
                <solid android:color="@android:color/white"/>
            </shape>
        </inset>
    </item>
</ripple>

【讨论】:

以上是关于保持笔划内的波纹的主要内容,如果未能解决你的问题,请参考以下文章

带有伪元素的 CSS 波纹效果导致回流

ListView 内的 EditText 不会保持焦点[重复]

不将 WKWebView 保持在安全区域内的约束

如何在悬停时使按钮内的文本透明?背景应该保持不变

保持在 Google BigQuery SQL 查询配额内的通用方法

Adobe Illustrator 中的折线简化如何工作?