问题标签 [rippledrawable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9845 浏览

android - Android无界波纹和背景

是否可以创建一个 RippleDrawable 定义无界波纹,同时定义背景颜色?我已经尝试了一切,但是当我定义一个形状及其颜色时,波纹不再是无限的。同样在此页面https://developer.android.com/reference/android/graphics/drawable/RippleDrawable.html中没有关于在形状上添加无界波纹的参考。

我试过这个层列表,但结果很糟糕

这就是我得到的在此处输入图像描述

0 投票
5 回答
7252 浏览

android - 如何处理 9-p​​atch 和 CardView 上的 Ripple 效果,并控制选择器的状态?

背景

我希望为 Android Lollipop 及更高版本的 listView 项目添加一个简单的涟漪效果。

首先,我想将它设置为简单的行,然后设置为 9-patch 行,甚至 CardView。

问题

我确信这会非常简单,因为它甚至不需要我定义普通选择器。即使是简单的行,我也没有这样做。出于某种原因,涟漪效应超出了行的边界:

在此处输入图像描述

不仅如此,在某些情况下,项目的背景会卡在我设置的颜色上。

编码

这是我尝试过的:

MainActivity.java

activity_main.xml

res/drawable-v21/listview_selector.xml(我有其他Android版本的普通选择器)

我试过的

除了上面的简单代码之外,我还尝试为每个项目的背景属性设置选择器,而不是在 ListView 上使用“listSelector”,但它没有帮助。

我尝试过的另一件事是设置项目的前景,但它也有相同的结果。

问题

我该如何解决这个问题?为什么会发生?我做错了什么?

我该如何走得更远,以支持 9-patch 甚至 CardView ?

另外,如何设置新背景的状态,例如被选中/选中?


更新:视图外的绘图是使用这样的东西固定的:

尽管如此,它仍然存在背景卡住的问题,我找不到如何处理其余缺失的功能(9-patch、cardView、...)。

我认为颜色被卡住与将其用作视图的前景有关。


编辑:我看到有些人不明白这里的问题是什么。

这是关于处理新的涟漪效应,同时仍然拥有旧的选择器/CardView。

例如,这是一个 selector-drawble:

这可以用作列表选择器或单个视图的背景。

但是,我找不到如何将它与可绘制的波纹一起使用。

我知道涟漪已经照顾了一些州,但对一些州来说,它没有。另外,我不知道如何让它处理 9-p​​atch 和 CardView。

我希望现在更容易理解我遇到的问题。


关于波纹颜色“卡住”的问题,我认为这是因为我如何制作布局。我想要一个可以检查的布局(当我决定时)并且还具有点击的效果,所以这就是我所做的(基于这个网站和另一个我找不到的):

编辑:修复是为我所做的布局添加下一行:

0 投票
3 回答
15882 浏览

android - 在 ListView 上禁用波纹

在 Android 5.0 中,我的 ListView 在单击列表项时会产生涟漪效果。有没有办法禁用这个效果?查看文档,我看不到任何方法(https://developer.android.com/reference/android/widget/ListView.html

0 投票
6 回答
10668 浏览

android - 如何在视图内的特定位置触发 Android Lollipop 的涟漪效应,而不触发触摸事件?

这是一个简短的问题:

假设我有一个ViewasRippleDrawable背景。

有没有一种简单的方法可以在不触发任何触摸或点击事件的情况下从特定位置触发涟漪?

0 投票
2 回答
3276 浏览

android - 将 RippleDrawable 和 StateListDrawable 的效果添加到 RecyclerView

我正在开发一个在较大设备上使用双窗格布局的应用程序,类似于此处详述的内容。布局摘要;一个窗格包含选项列表,而另一个将显示有关从另一个窗格中选择的选项的详细信息。

Right now when an option is selected there is the ripple effect that's seen when selecting other elements (buttons, check boxes, etc) but after the animation completes the element returns to it's previous color. 我想在动画完成后保留涟漪中的亮点,但我无法弄清楚如何实现这一点。

这就是我的波纹背景目前的样子。选择focus器没有做任何事情 - 无法弄清楚如何实际赋予元素焦点。我也尝试过使用selected选择器,但这会立即发生,覆盖波纹。

重申一下,我的问题是:是否有可能同时出现涟漪效应和突出显示的选择,如果可以,如何?

0 投票
2 回答
1245 浏览

java - 按下长按时防止短按

我想在 LongClicked 一个项目时取消 shortClick,我在列表视图中使用波纹效果材料波纹库但是当我长按列表项目时它也调用 onClick-event

list.setOnItemClickListner 不适用于行项目上的 MaterialRippleLayout

我在 OnLongClicked 中也返回了 true 但不起作用..

还在MaterialRippleLayout.java中尝试并添加了方法

以及手势检测器的一些变化

这是我的代码 list_item

&java代码

对不起英语不好

0 投票
3 回答
21944 浏览

android - 在 ImageButton 之外实现波纹效果

我正在尝试为 ImageButton 实现波纹效果。我在背景中设置了波纹,并在 src 中为它设置了可绘制图像。

它在按钮布局内提供了很好的涟漪效果。但我希望波纹效果也扩展到按钮布局之外。另一种方法是使用:

但它使用默认颜色和样式。我如何定制它的颜色、形状和大小?

0 投票
2 回答
7117 浏览

android - 涟漪效应有时不会出现

我定义了一个可绘制的波纹并将其设置为列表视图项目视图背景的背景。它几乎可以正常工作,但涟漪效应有时不会在按下时出现。

这是波纹可绘制代码:

我有一个导航抽屉,它使用这个drawable作为抽屉项目的背景:

但是每次打开应用程序时,默认选择的项目在我按下时不会显示波纹效果。但是在我选择另一个项目然后再次选择它之后,一切都会好起来的。

我对另一个几乎相同的ListView使用完全相同的,除了选择模式是多重的。而这一次,只要被选中的项目,按下时不会出现波纹效果。

在另一个没有指定选择模式的listView中,只有第一项显示了涟漪效果,其他的行为与较低的Android版本相同。

我真的不知道如何让它适用于所有场景。也许它真的与ListView的选择模式有关?

====编辑====

我刚刚为这三个 listViews 添加了属性 drawSelectorOnTop,现在前两个问题都解决了。但是对于第三个,它现在变成了这样:

涟漪效果适用于所有项目,除了第一个显示两个涟漪的项目!其中一个从我手指按下的位置开始,而另一个总是从中间开始!

====再次编辑==== 好的,现在我调整可绘制对象以将激活状态移动到波纹节点之外,以及列表视图的 drawSelectorOnTop 属性,问题现在完全消失了。

0 投票
1 回答
8300 浏览

android - 使用 Android 5.0 设备在 CardView 上以 selectableItemBackground 作为前景的涟漪未显示

我在 Nexus 5 上运行它。这是我的 CardView 的部分代码:

以下是我获得 selectedItemDrawable 的方法:

当我点击卡片时,不出现应该与 selectedItemDrawable 一起出现的波纹(它看起来与没有设置前景完全相同)。我正在运行 5.0,所以这看起来很奇怪,因为 appcompat 文档只说它不适用于棒棒糖之前的设备。有谁知道为什么会这样?最低 API 级别为 16,目标为 21。

0 投票
4 回答
27412 浏览

android - 如何在波纹可绘制中设置 state_selected

如何android:state_selectedRippleDrawable中指定

我有以下 xml 用于可绘制的波纹,但是当我设置时背景颜色不显示myView.setSelected(true);