Android ListView CheckedTextView点滅
-
08-10-2019 - |
質問
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クリック時にハイライトを表示する方法は?
所属していません StackOverflow