项目动态添加删除文本框和左侧虚点
来源:互联网 发布:工商银行淘宝灵通卡 编辑:程序博客网 时间:2024/06/05 00:21
先上效果图:
点击“+”添加一行,点击“-”去掉一行,当然还有左侧的虚点了。
实现过程:主要分为左右两部分,左边的虚点,和右边的输入目的地。
布局:<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/c11" android:orientation="horizontal"> <LinearLayout android:layout_width="24dp" android:layout_height="wrap_content" android:layout_marginLeft="@dimen/s2" android:layout_marginRight="@dimen/s2" android:layout_marginTop="@dimen/s3" android:gravity="center_horizontal" android:orientation="vertical"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:src="@mipmap/ic_mylocation_list" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:src="@mipmap/ic_pointline_list" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:src="@mipmap/ic_destination_list" /> <LinearLayout android:id="@+id/ll_address_icon_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:src="@mipmap/ic_pointline_list" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:src="@mipmap/ic_stoplocation_list" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginRight="@dimen/s4" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="48dp"> <TextView android:id="@+id/tv_start_location" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:ellipsize="end" android:singleLine="true" android:textColor="@color/c3" android:textSize="@dimen/f3" /> <View android:layout_width="match_parent" android:layout_height="1px" android:layout_alignParentBottom="true" android:background="@color/c5" /> </RelativeLayout> <RelativeLayout android:id="@+id/ll_location0_info" android:layout_width="match_parent" android:layout_height="48dp" android:tag="address0"> <ImageView android:id="@+id/iv_add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:padding="4dp" android:src="@mipmap/ic_add_list" /> <TextView android:id="@+id/tv_location_item" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toLeftOf="@id/iv_add" android:ellipsize="end" android:singleLine="true" android:text="@string/price_calculate_default_text" android:textColor="@color/c4" android:textSize="@dimen/f3" /> <View android:layout_width="match_parent" android:layout_height="1px" android:layout_alignParentBottom="true" android:background="@color/c5" /> </RelativeLayout> <LinearLayout android:id="@+id/ll_address_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="48dp"> <TextView android:id="@+id/tv_end_location" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerVertical="true" android:ellipsize="end" android:gravity="center_vertical" android:singleLine="true" android:textColor="@color/c3" android:textSize="@dimen/f3" tools:text="测试文案" /> <View android:layout_width="match_parent" android:layout_height="1px" android:layout_alignParentBottom="true" android:background="@color/c5" /> </RelativeLayout> </LinearLayout></LinearLayout>
左侧虚点中有一个用来存放添加的虚点的。
<LinearLayout android:id="@+id/ll_address_icon_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical" />
右侧有一个用来存放新增的文本框
<LinearLayout android:id="@+id/ll_address_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" />
然后我们展示出需要添加的布局
虚点:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:src="@mipmap/ic_pointline_list" /> <ImageView android:id="@+id/iv_del_item_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:scaleType="center" android:src="@mipmap/ic_pointline_list" /></LinearLayout>
文本框:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="48dp" android:background="@color/c11"> <ImageView android:id="@+id/iv_location_item_del" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:padding="4dp" android:src="@mipmap/ic_reduce_list" /> <TextView android:id="@+id/tv_location_item" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_toLeftOf="@id/iv_location_item_del" android:ellipsize="end" android:singleLine="true" android:text="@string/price_calculate_default_text" android:textColor="@color/c4" android:textSize="@dimen/f3" /> <View android:layout_width="match_parent" android:layout_height="1px" android:layout_alignParentBottom="true" android:background="@color/c5" /></RelativeLayout>
现在所有布局都准备好了,我们需要去界面中码砖了。
//--------------------------点击+号添加地址-------------------------- @OnClick(R.id.iv_add) public void addClick() { if (mLlAddressContainer.getChildCount() >= 4) { L.i("目的地地址最多为5个"); return; } String tag = "address" + count.getAndIncrement(); // 左侧的虚线View View dashLineView = layoutInflater.inflate(R.layout.cost_assess_address_del_item, null); dashLineView.setTag(tag); mLlAddressIconContainer.addView(dashLineView); // 新增加的选择地址ItemView View addressView = layoutInflater.inflate(R.layout.cost_assess_address_item, null); addressView.setTag(tag); LinearLayout.LayoutParams addressParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int) getResources().getDimension(R.dimen.s5)); addressView.setOnClickListener(addressClick); View rightDelIcon = addressView.findViewById(R.id.iv_location_item_del); rightDelIcon.setTag(tag); rightDelIcon.setOnClickListener(delIconClick); mLlAddressContainer.addView(addressView, addressParams); }
这里我们创建了一个tag标示,给每次add进来的view都添加了tag标示,为了当我们删除add进来的view来做查找判断。
代码中我们首先将在左侧虚点布局的LinearLayout中添加了虚点布局,右侧文本框布局的LinearLayout中添加了文本框布局。
然后对文本框做了点击事件处理(该文章不关注此动作),对“-”做了点击处理,接下来我们查看该处理动作。
/** * 右侧的删除地址Icon点击逻辑 */private View.OnClickListener delIconClick = new View.OnClickListener() { @Override public void onClick(View view) { String tag = (String) view.getTag(); L.i("delIconClick---点击的是:" + tag); deleteAddressByTag(tag); }};/** * 根据tag删除添加的目的地地址,及Icon * * @param tag */private void deleteAddressByTag(String tag) { View iconView = mLlAddressIconContainer.findViewWithTag(tag); mLlAddressIconContainer.removeView(iconView); View addressView = mLlAddressContainer.findViewWithTag(tag); mLlAddressContainer.removeView(addressView); //deleteItemPoint(tag);}
这里我们通过点击的view获取到我们设置的tag标示,并根据该标示将之前添加进来的虚点布局和文本框布局删除。至此该效果完成,其他逻辑可根据各自产品需求依次添加。
0 0
- 项目动态添加删除文本框和左侧虚点
- 用javascript动态添加和删除文本框
- 动态添加、删除文本框
- jquery对文本框动态的添加和删除
- jQuery + JavaScript 实现的动态添加文本框功能 和 动态删除文本框功能(二)
- HTML文本框添加和删除
- Asp.net中动态添加删除文本框
- 用javascript动态添加删除文本框
- 页面中动态添加、删除文本框
- JQuery实现动态增加和删除文本框
- JQuery实现动态增加和删除文本框
- 动态添加一行文本框,指定删除一行,取值
- js添加删除文本框
- js添加删除文本框
- select动态添加和删除
- 动态添加和删除行
- 动态添加和删除crontab
- 动态添加和删除控件
- Java配置环境变量
- 多校联赛第三场
- PHP 魔术方法之 __call 与 __callStatic
- iOS获取当天0点时间
- HTTP的get_post请求方法
- 项目动态添加删除文本框和左侧虚点
- 基于LC push的浏览器桌面提醒快速集成方案
- jquery全选和反全选在第三次点击后无效的问题
- 更改文件夹权限
- socket网络编程
- 杭电5752之Sqrt Bo
- Java 集合体系详解——List体系有序集合
- 安全标准
- skb->truesize,len,datalen,size,等的区别