我有一个动态列表视图:
<ListView android:layout_width="match_parent"
android:layout_height="match_parent"
android:fastScrollEnabled="true"
android:choiceMode="singleChoice"
android:dividerHeight="1dp"
android:divider="#1f000000"
android:background="@android:color/background_light"
android:drawSelectorOnTop="true"/>
使用单元格:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/list_ripple">
涟漪:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/list_selected" android:state_activated="true"/>
</selector>
这很有效。
我的问题出在我正在创建的另一个列表中。它是一个静态列表,所以我只是使用TableLayout和TableRow在xml中定义列表。有没有办法可以让我显示相同的“选定”状态。还有涟漪显示?
<TableLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchColumns="0">
<TableRow android:id="@+id/about_row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="16dp"
android:paddingLeft="16dp"
android:paddingBottom="20dp"
android:clickable="true"
android:background="@drawable/list_ripple">
我试图将涟漪放在背景元素上,但这不起作用。再次最好的情况是获得灰色选择状态,表明选择了表格行,如果可能的话,还有纹波。
答案 0 :(得分:0)
我是通过动态添加纹波来完成的,你可以尝试静态和动态。(v21)
你的涟漪文件:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight">
<item>
<shape android:shape="rectangle">
<solid android:color="?android:textColorHintInverse" />
</shape>
</item>
</ripple>
制作row.setClickable(true)
和
在你的点击监听器上设置背景,如下图所示:
tableRow.setOnClickListener(new View.OnClickListener() {
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public void onClick(View v) {
tableRow.setBackground(mContext.getDrawable(R.drawable.list_ripple));
Snackbar.make(v, "row Clicked", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
希望有所帮助