質問

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

行が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が押されたときに「フリッカー」効果はありません。

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

ありがとう

役に立ちましたか?

解決

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

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

他のヒント

ListViewは、アイテムがクリックされたときに独自のスキームを使用します(背景を強調表示します)。このソリューションをチェックしてください Androidクリック時にハイライトを表示する方法は?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top