我已经实现了Lollipop中引入的涟漪效应ListView.但它只适用于第一项ListView.我已经按照这个问题的答案,但我无法设置涟漪效应.
我有一个ripple_background.xml在drawable-v21文件夹:
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@android:color/background_dark">
<item>
<shape
android:shape="oval">
<solid android:color="?android:colorAccent" />
</shape>
</item>
</ripple>
Run Code Online (Sandbox Code Playgroud)
我ListView存在的布局如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<ListView
android:id="@+id/listSettings"
android:listSelector="@android:color/transparent"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:divider="@color/price_item_divider"
android:dividerHeight="1dp"
android:drawSelectorOnTop="true"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
内部填充的项目ListView如下(settings_item_row.xml):
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="70dp"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:background="@drawable/ripple_background"
android:padding="16dp" >
<ImageView
android:id="@+id/imageViewIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:paddingRight="10dp" />
<TextView
android:id="@+id/textViewName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/imageViewIcon"
android:paddingRight="10dp"
android:textColor="@android:color/black"
android:textSize="18sp" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
我遇到了同样的问题,并找到了解决这个问题的简单方法.无需为任何列表项设置任何背景或ListView.只需设置android:listSelector你的波纹可绘制ListView.
所以ListView在我的活动中看起来像:
<ListView
android:id="@+id/myListView"
...
android:listSelector="@drawable/ripple" />
Run Code Online (Sandbox Code Playgroud)
我的波纹可绘制定义为:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/rippleColour">
<item android:drawable="@color/backgroundColour"/>
</ripple>
Run Code Online (Sandbox Code Playgroud)
刚刚遇到这个问题并修复了它。从各个列表项视图中删除可绘制的波纹背景,然后在 ListView 本身上设置背景。另外,将 drawSelector 添加到列表项并从 ListView 中删除字段。
此修复仅适用于 ListView 具有单色背景。
您的列表项视图:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="70dp"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:background="@drawable/ripple_background"
android:padding="16dp" >
Run Code Online (Sandbox Code Playgroud)
和你的列表视图:
<ListView
android:id="@+id/listSettings"
android:listSelector="@android:color/transparent"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:divider="@color/price_item_divider"
android:dividerHeight="1dp"
android:background="@color/__Your color here__
/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8023 次 |
| 最近记录: |