Android ListView CheckedTextView闪烁

时间:2010-12-11 18:23:19

标签: android android-listview checkedtextview

CheckedTextView存在问题,我似乎无法找到解决方案。我甚至不完全确定发生了什么。

我有一个自定义ListView,其行包含TextViews和CheckedTextView。

row.xml

<CheckedTextView 
    android:layout_height="wrap_content"
    android:layout_width="fill_parent" 
    android:id="@+id/title"
    android:text="Name" 
    android:gravity="center_vertical"
    android:paddingRight="6dip"
    android:typeface="sans" 
    android:checkMark="?android:attr/textCheckMark"
    android:textSize="16sp" 
    android:textStyle="bold"/>

MyAdapterView.java

public class RuleAdapterView extends LinearLayout
{   
    private CheckedTextView title;

    ...

    title = (CheckedTextView)v.findViewById(R.id.title);
    title.setText(entry.getName());
    title.setChecked(entry.isActive());

    // setup a listener for the checkbox
    title.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v)
        {
            ((CheckedTextView) v).toggle();
        }
    });
}

在主XML文件中,我将ListView设置为android:choiceMode="multipleChoice"

所以我想要的是ListView行是长而短的可点击的,并且CheckedTextView是单独的点击执行。这适用于CheckedTextView的文本部分。每当按下CheckedTextView时,文本'闪烁'。我慢慢地弄清楚究竟发生了什么。当您按下CheckTextView时,白色文本消失或切换为黑色(可能会反转?),当您释放时,文本会再次出现并且复选标记会切换。按下ListView时没有“闪烁”效果。

关于这里发生了什么的任何想法?

由于

2 个答案:

答案 0 :(得分:0)

您应该尝试使用OnTouchListener

,而不是使用OnClickListener
ckToggle.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                CheckedTextView ck = ((CheckedTextView) v);
                ck.toggle();
                return false;
            }
        });

答案 1 :(得分:0)

ListView在单击项目时使用自己的方案(突出显示背景)。您可能需要查看此解决方案Android how to make View highlight when clicked?