1

CheckedTextView に問題があり、解決策が見つからないようです。何が起こっているのか完全にはわかりません。

行に TextViews と CheckedTextView が含まれるカスタム ListView があります。

行.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 が押されたときの「ちらつき」効果はありません。

ここで何が起こっているかについてのアイデアはありますか?

ありがとう

4

2 に答える 2

0

OnClickListener を使用する代わりに、OnTouchListener を使用してみてください。

ckToggle.setOnTouchListener(new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                CheckedTextView ck = ((CheckedTextView) v);
                ck.toggle();
                return false;
            }
        });
于 2011-03-09T20:58:51.063 に答える
0

ListView は、アイテムがクリックされたときに独自のスキームを使用します (背景を強調表示します)。このソリューションAndroid how to make View when clicked?を確認することをお勧めします。

于 2011-06-06T13:41:25.800 に答える