为了能够选择行上的项目(行)和子项目,我使用android:descendantFocusability="blocksDescendants"
。我正在使用onItemSelect
事件....
我也为我的行使用自定义背景。
现在的问题是,当我触摸一行时,复选框也会被选中它的背景(蓝色默认背景,当你选择一个复选框时),我该如何避免这种情况?当我触摸行时,我只希望行本身将其背景调整为项目状态。
我正在使用以下行布局作为适配器列表视图中的一行:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rlMain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@drawable/list_gradient"
android:descendantFocusability="blocksDescendants" >
<CheckBox
android:id="@+id/cbSelected"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true" />
<TextView
android:id="@+id/tvDayName"
style="@style/text_list_info_big"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/cbSelected"
android:text="Tag" />
<RelativeLayout
android:id="@+id/drag_handle"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:layout_centerVertical="true" >
<ImageView
android:layout_width="60dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:src="@drawable/grabber" />
</RelativeLayout>
<LinearLayout
android:id="@+id/lvData"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/s"
android:layout_toRightOf="@+id/tvDayName"
android:orientation="vertical" >
<TextView
android:id="@+id/tvCount"
style="@style/text_list_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:text="" />
<TextView
android:id="@+id/tvInfo"
style="@style/text_list_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:text="" />
<TextView
android:id="@+id/tvInfo2"
style="@style/text_list_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:text="" />
</LinearLayout>
</RelativeLayout>
PS:我知道我可以处理行的onClick
事件和我的适配器中的子项而不是使用onItemClick
,但我正在使用DragAndSortList视图并按此方式执行不能拖拽那里......
答案 0 :(得分:0)
我找到了解决方案。覆盖行的SetPressed不起作用。
现在我正在使用以下RelativeLayout,这正在解决我的问题:
import android.content.Context;
import android.util.AttributeSet;
import android.widget.RelativeLayout;
public class UnpressableRL extends RelativeLayout
{
public UnpressableRL(Context context, AttributeSet attrs)
{
super(context, attrs);
}
@Override
protected void dispatchSetPressed(boolean pressed) {
// avoid handing on the event to the child views
}
}