Android GridView和EditText焦点冲突问题
来源:互联网 发布:动态字幕制作软件 编辑:程序博客网 时间:2024/06/05 19:29
效果:长按Item可删除该item;edittext中可编辑内容。
用到的属性: android:descendantFocusability
descendantFocusability的值有三种:
beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
走过的路,还是记录一下吧:
1.
//item的布局 item_gridview<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
gridview.setAdapter(adapter);
如此,则edittext可编辑,item的长按事件无法捕获到。
2.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:descendantFocusability="blocksDescendants" android:orientation="vertical"> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
如此,item的长按事件可捕获到,edittext获取不到焦点无法编辑。
3.参考ListView中EditText焦点问题:http://www.cnblogs.com/skyseraph/archive/2013/04/21/3033848.html
4.以上都试过了,都不能实现想要的效果。于是……
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/ll_item" android:orientation="vertical"> <EditText android:id="@+id/editText" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
自定义的GridViewAdapter,只贴了有用的部分
public class GridViewAdapter extends BaseAdapter { private Context context; private CallBackInterface callBackInterface; public GridViewAdapter(Context context){ this.context=context; }//添加长按监听接口 public void setLongClickCallBack(CallBackInterface backInterface){ this.callBackInterface=backInterface; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView= LayoutInflater.from(context).inflate(R.layout.item_gridview,null); LinearLayout ll_item= (LinearLayout) convertView.findViewById(R.id.ll_item); EditText editText= (EditText) convertView.findViewById(R.id.editText); ll_item.setOnLongClickListener(new MyLongClickListener(position,callBackInterface)); return convertView; }}
class MyLongClickListener implements View.OnLongClickListener{ private int position; private CallBackInterface backInterface; public MyLongClickListener(int position,CallBackInterface callBackInterface){ this.position=position; this.backInterface=callBackInterface; } @Override public boolean onLongClick(View v) { backInterface.callBack(position); return true; } }
public interface CallBackInterface { public void callBack(int position);}
//初始化adapter后调用长按回调,做相应处理 adapter.setLongClickCallBack(new CallBackInterface() { @Override public void callBack(int position) { //做相应的处理 } }); adapter.notifyDataSetChanged();
其实就是监听父控件的长按事件,实现的效果跟gridview.setonLongClickListener()的监听效果一样。
呵呵呵···,只想说条条大路都能到家~~
0 0
- Android GridView和EditText焦点冲突问题
- Android WebView和EditText焦点冲突解决
- xamarin android TextView跑马灯效果和EditText焦点冲突的问题
- Android EditText 软键盘和焦点问题
- android之EditText焦点问题
- Android项目EditText焦点问题
- Android EditText的焦点问题
- Android中EditText焦点问题
- listview和edittext焦点问题
- android ListView嵌入EditText焦点和值错误问题
- android 解决EditText无法失去焦点和失去焦点后隐藏软键盘的问题
- EditText焦点问题 Android开发之ListView+EditText-要命的焦点和软键盘问题解决办法
- EditText与WebView焦点冲突
- Android 相关知识 EditText焦点相关问题
- android popupwindow中edittext获取焦点问题
- 【Android】ListView中EditText焦点问题
- 【Android】ListView中EditText焦点问题
- 关于Android的EditText焦点问题
- 拷贝加指针拷贝
- mac os下 ionic 2 安装(二),酷炫的hello world 先跑起来!!(运行app)
- 04 - Windows8中安装及验证Docker
- 第十四周项目2--二叉树排序树中查找的路径
- 线性表
- Android GridView和EditText焦点冲突问题
- 浅谈IQKeyboardManager第三方库的使用
- 05 - Docker Machine 概述
- UITextView
- Ubuntu安装Protobuf2.5
- 单链表基本操作(1)
- AQS同步工具类对比
- 06 - 分析docker run hello-world
- CPSR_cxsf 详解