yit*_*al9 56 android listview imagebutton
我在listview上遇到了麻烦.它的项目(行)有图像按钮.imagebutton有"android:onClick"所以这个onclick事件正在运行,但点击行不起作用.如果我从行项目中删除图像按钮,单击行工作(列表视图具有正确的onclick列表器).我该如何解决?当用户点击图像按钮和标准点击事件时,我需要onclick事件,当用户选择行时(不单击图像按钮但单击该行)
我的列表视图:
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/restaurants_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:divider="@color/list_devider"
android:dividerHeight="1dp"
android:cacheColorHint="@color/list_background" />
Run Code Online (Sandbox Code Playgroud)
Eli*_*iko 178
不幸,
android:focusable="false"
android:focusableInTouchMode="false"
Run Code Online (Sandbox Code Playgroud)
不起作用ImageButton.
我终于在这里找到了解决方案.在这些项目的布局xml中,添加
android:descendantFocusability="blocksDescendants"
Run Code Online (Sandbox Code Playgroud)
到根视图.
它适用于ListView有ImageButtons的.根据官方的参考,blocksDescendants意味着ViewGroup将阻止其后代获得焦点.
您可以为listView使用自定义适配器(如果尚未使用).在那里,在getView(int position, View inView, ViewGroup parent)适配器的方法做这样的事情:
@Override
public View getView(int position, View inView, ViewGroup parent) {
View v = inView;
ViewHolder viewHolder; //Use a viewholder for sufficent use of the listview
if (v == null) {
LayoutInflater inflater = (LayoutInflater) adaptersContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.list_item, null);
viewHolder = new ViewHolder();
viewHolder.image = (ImageView) v.findViewById(R.id.ImageView);
v.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) v.getTag();
}
.....
viewHolder.image.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Click on imageView
}i
});
v.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Click on listView row
}
});
.....
return (v);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37798 次 |
| 最近记录: |