java应用程序小部件:当背景添加到外部布局时,列表项上的涟漪效应消失
这件事快把我逼疯了。下面是它的工作原理
1。所有内容都设置为默认值
- 涟漪效应工程
- 列表视图项分隔符可见
2。小部件布局中添加了白色背景
- 涟漪损失
- 列表视图项分隔符也消失了
- 看起来列表项样式已被删除
这是密码
主窗口小部件布局
<LinearLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
...
安卓:background="@安卓:color/white" -- this line only applies for case 2
安卓:padding="@dimen/widget_padding">
<TextView
...
安卓:background="@color/primary"
安卓:textColor="@安卓:color/white"/>
<ListView
...
安卓:drawSelectorOnTop="true""/>
<TextView
...
安卓:textColor="?安卓:attr/textColorSecondary"/>
</LinearLayout>
列表项布局
<RelativeLayout
xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
...
安卓:id="@+id/widgetItem">
<TextView
...
安卓:textColor="@安卓:color/black"
安卓:textSize="14sp"/>
<TextView
...
安卓:textColor="@color/negative_amount"
安卓:textSize="16sp"
安卓:textStyle="bold"/>
</RelativeLayout>
我花了一天的时间尝试了所有可能的组合,但没有任何效果。我不明白,列表视图周围的一些布局的无关背景更改完全改变了行为。WTF
我想以尽可能干净的方式解决它-即不使用自定义选择器进行黑客攻击。如果可能的话,这应该是开箱即用的
# 1 楼答案
看起来您的活动使用的是黑色主题,因此涟漪是白色的,因此在白色背景上不可见。最简单的解决方案是使用主题的灯光变体,这将导致波纹为黑色
例如,如果您使用的是AppCompat主题,则可以将此行添加到
ListView
:您也可以将其应用于视图层次结构,例如:
这将导致在
LinearLayout
及其所有子视图中使用主题此外,您还可以通过将
android:theme
属性添加到<activity>
或<application>
标记添加到AndroidManifest.xml
来指定整个主题活动甚至整个应用程序