Android:自定义组合控件之动态删减编辑框
2016-04-20 18:33
621 查看
需求:
![](https://img-blog.csdn.net/20160420180014949)
点击x删除当前行
点击Add增加一行
在初始化方法中加载布局
点击Item右侧图标删除当条view
以上为自定义组合控件部分内容
完毕!
点击x删除当前行
点击Add增加一行
Step1 组合布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="@dimen/item_height"> <EditText android:id="@+id/et_text" android:layout_width="0dp" android:layout_height="48dp" android:layout_weight="1" android:background="@null" /> <!--此处设置的是Item右侧的删除图标,用的是iconfont,可根据实际需要替换--> <com.cuitrip.business.tripservice.ui.IconTextView android:id="@+id/iv_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:text="@string/close" android:textSize="@dimen/ct_ts_16" android:visibility="gone" /> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1px" android:background="#ded8d7" /> </LinearLayout>
Step2 设置自定义属性
在attrs.xml文件中添加如下属性(用于设置提示文字):<declare-styleable name="CombinationItemView"> <attr name="cvTextHint" format="string"/> </declare-styleable>
Step3 编写自定义View
构造函数public CombinationItemView(Context context) { this(context,null); } public CombinationItemView(Context context, AttributeSet attrs) { this(context, attrs,0); } public CombinationItemView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); //获取自定义属性 TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CombinationItemView, defStyleAttr, 0); textHint = a.getString(R.styleable.CombinationItemView_cvTextHint); a.recycle(); //初始化方法 init(); }
在初始化方法中加载布局
private void init() { view = LayoutInflater.from(getContext()).inflate(R.layout.item_comb, this); ButterKnife.bind(this); //当item获取焦点时,显示删除图标 etText.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if(hasFocus){ ivIcon.setVisibility(VISIBLE); }else{ ivIcon.setVisibility(GONE); } } }); //设置提示文字 setTextHint(textHint); }
点击Item右侧图标删除当条view
@Override public boolean onTouchEvent(MotionEvent event) { //判断手指是否触摸到右侧图标 if (event.getX()>=etText.getRight()){ removeAllViews(); return true; } return super.onTouchEvent(event); }
以上为自定义组合控件部分内容
点击增加item
@OnClick(R.id.tv_add)//这里的id是需要点击的button的id public void addItem(){ CombinationItemView combinationItemView = new CombinationItemView(getActivity()); //获取button在布局中的position(parent为LinearLayout) int i = container.indexOfChild(tvAdd); //将动态生成的item添在button原来的位置上 container.addView(combinationItemView,i); }
完毕!
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories