对TableRow的效果相同,单击ListView单击

时间:2015-05-27 02:33:28

标签: android android-listview android-tablelayout

我有一个动态列表视图:

<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">

我试图将涟漪放在背景元素上,但这不起作用。再次最好的情况是获得灰色选择状态,表明选择了表格行,如果可能的话,还有纹波。

1 个答案:

答案 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();
                }
            });

希望有所帮助