如果你自定义ListView的项中包含能获得焦点的子控件(RadioGroup、Button、CheckBox、 DatePicker、ImageButton、ScrollView、SeekBar、EditText、ToggleButton、 RatingBar等)的话,默认焦点会被交给这些子控件,而ListView的项能被选中的基础是它能获取焦点,所以项中的这些子控件的焦点必须为 false,这样ListView的项才能获取onItemLongClick事件与onItemClick事件
注意:ListView的项根元素layout的宽要设置成android:layout_width="fill_parent",否则可能会因为项内容太短,导致点击时获取不到焦点。
如果你自定义ListView的项中包含能获得焦点的子控件GridView的话,默认焦点会被交给这些子控件,而ListView的项能被选中的 基础是它能获取焦点,所以项中的这些子控件的焦点必须为false,这样ListView的项才能获取onItemLongClick事件与 onItemClick事件
解决办法(以Button为例):
在布局文件中,在项的layout布局文件根元素中加入android:descendantFocusability="blocksDescendants"注意:ListView的项根元素layout的宽要设置成android:layout_width="fill_parent",否则可能会因为项内容太短,导致点击时获取不到焦点。
如果你自定义ListView的项中包含能获得焦点的子控件GridView的话,默认焦点会被交给这些子控件,而ListView的项能被选中的 基础是它能获取焦点,所以项中的这些子控件的焦点必须为false,这样ListView的项才能获取onItemLongClick事件与 onItemClick事件
解决办法(以Button为例):
1.在布局文件中,在项的layout布局文件根元素中加入
android:descendantFocusability="blocksDescendants"
2.程序中给GridView进行如下设置
gridView.setClickable(false);
gridView.setPressed(false);
gridView.setEnabled(false);
要是listview上面或下面有黑色阴影
解决办法:布局文件中给listview加入android:fadingEdge="none"
一个完整的listview(带分割线+背景色)
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="180dip"
android:divider="#ff999999"
android:dividerHeight="1sp"
android:fadingEdge="none"
android:scrollingCache="false"
android:background="#ff00ff00"
/>