我有一个列表视图,行的布局有一个子,背景设置为以下选择器:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape android:shape="rectangle">
<solid android:color="@color/pressed_panel" />
<corners android:radius="@dimen/rounded_panel_corners" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
<corners android:radius="@dimen/rounded_panel_corners" />
</shape>
</item>
现在出现这种情况:
更多信息: @ Abhishek V在评论中提出的问题: 1.背景设置为行布局的子项而不是行布局本身对吗?对!这是布局,选择器设置为id为“container_conversation”的亲戚
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:descendantFocusability="blocksDescendants"
android:orientation="vertical">
<CheckBox
android:id="@+id/checkbox_select_row"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="18dp"
android:button="@drawable/checkbox_round_selector"
android:focusable="false"
android:clickable="true"
android:padding="8dp"/>
<FrameLayout
android:id="@+id/row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:descendantFocusability="blocksDescendants"
android:orientation="vertical"
>
<RelativeLayout
android:id="@+id/back"
android:layout_width="wrap_content"
android:layout_height="82dp"
android:layout_gravity="right"
android:layout_marginBottom="4dp"
android:layout_marginRight="9dp"
android:layout_marginTop="4dp">
<SomeViews>
</RelativeLayout>
<FrameLayout
android:id="@+id/front"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="visible"
tools:visibility="visible">
<RelativeLayout
android:id="@+id/container_conversation"
android:layout_width="match_parent"
android:layout_height="82dp"
android:layout_marginBottom="4dp"
android:layout_marginLeft="9dp"
android:layout_marginRight="9dp"
android:layout_marginTop="4dp"
android:background="@drawable/white_rounded_panel">
<SomeViews>
</RelativeLayout>
<View
android:id="@+id/unread_indicator"
android:layout_width="8dp"
android:layout_height="8dp"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp"
android:background="@drawable/orange_circle"
android:visibility="gone"
tools:visibility="visible" />
</FrameLayout>
</FrameLayout>
2)点击/触摸监听器设置为行布局还是它的孩子? 儿童 3)你正在使用哪个监听器,是onClick,onTouch还是onItemClick? 列表视图实际上是从android-swipelistview https://github.com/47deg/android-swipelistview库中复制的。 造成伤害的点击设置如下:
frontView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
swipeListView.onClickFrontView(downPosition);
}
});
并且此次点击会通知此侦听器
BaseSwipeListViewListener swipeListener = new BaseSwipeListViewListener() {
@Override
public void onClickFrontView(int position) {
}//...
谢谢!
答案 0 :(得分:0)
尝试使用clearChoices
和notifyDataSetChanged
:
yourListView.clearChoices();
yourListView.getAdapter().notifyDataSetChanged();
答案 1 :(得分:0)
可能是mutate problem。尝试通过首先在drawable上调用mutate()
以编程方式将背景分配给行。
首先,从自定义selector-drawable中获取Drawable
实例,然后在其上调用mutate()
,最后将drawable分配为行的背景:
Drawable selector = getResources().getDrawable(R.drawable.your_selector)
selector.mutate();
//...
row.setBackground(selector);
答案 2 :(得分:0)
您在此处遇到的问题已在https://github.com/47deg/android-swipelistview/issues/41报告。
根据@strgev在该主题中的讨论,修复是 -
通过在onTouch方法中添加以下行来编辑类SwipeListViewTouchListener
:
....
case MotionEvent.ACTION_UP: {
view.onTouchEvent(motionEvent);
...
你能试试吗?