【问题标题】:How can I make the ripple effect look like a circle instead of an oval?如何使波纹效果看起来像圆形而不是椭圆形?
【发布时间】:2025-11-28 05:55:01
【问题描述】:

我的大多数图像按钮都有相同的涟漪效果,并且大多数按钮在按下时看起来像一个圆圈,但在某些按钮上它看起来像一个椭圆形,我只是不确定为什么它看起来不同。我意识到实际的波纹形状设置为椭圆形,但为什么它在其他一些按钮上看起来像一个圆圈。可能是因为它发生得如此之快,所以我只是看不正确。

这是我的波纹 xml:

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="?android:colorControlHighlight">
    <item android:id="@android:id/mask">
        <shape android:shape="oval">
            <solid android:color="?android:colorPrimary" />
        </shape>
    </item>
</ripple>

谢谢。

编辑:在ImageButtons 内的LinearLayout 上使用layout_weight 对我来说是个问题。我从各个按钮中删除了权重,而是在每个按钮之间添加了权重为 1 的空格,如下所示:

 <Space
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_weight="1" />

【问题讨论】:

    标签: android android-5.0-lollipop material-design rippledrawable


    【解决方案1】:

    是的。我也有同样的问题。效果完全取决于对象的尺寸。例如,512*512 的图像给了我完美的圆形波纹效果,屏幕底部的矩形按钮给了我椭圆形/椭圆形的效果。所以我在那个矩形按钮后面添加了一个小方形按钮,并为那个方形按钮添加了效果。当按下那个按钮时,我调用那个方形按钮来显示效果。

    【讨论】:

    • 感谢您的回复。我有点假设它按照您描述的方式工作,但是获得椭圆形波纹的按钮的高度和宽度为 48dp,因此它们是方形的。它们里面的图像是一个圆圈,但不确定这会如何影响事物。
    • 我根据我遇到的矩形按钮问题给出了我的经验,如果问题仍然存在方形按钮,那么代码或波纹的实现方式有问题。
    • 我想我现在知道为什么会这样了。我有一个 `android:layout_weight="25"` 和 4 个按钮。所以实际宽度远大于48dp。我打算将其更改为其他布局,我敢打赌这会解决它。
    • 是的,这是布局权重。既然你解释了它是如何工作的,我会把你标记为正确的。