Define a dynamic control. You can click the last button to add a row of controls. Otherwise, the selected row of controls can be deleted.
/** <Br/> */<br/> package Org. xiangjie. view. blacklist; <br/> Import Java. util. arraylist; <br/> Import Java. util. list; <br/> Import Org. xiangjie. r; <br/> Import android. content. context; <br/> Import android. util. attributeset; <br/> Import android. view. gravity; <br/> Import android. view. layoutinflater; <br/> Import android. view. view; <br/> Import android. widget. edittext; <br/> Import android. widget. IMA Gebutton; <br/> Import android. widget. linearlayout; <br/> Import android. widget. tablelayout; <br/> Import android. widget. tablerow; <br/> Import android. widget. textview; <br/>/** <br/> * @ author Jie. xiang <br/> */<br/> public class dynamiccontrol extends linearlayout {<br/> private layoutinflater minflater; <br/> private tablelayout layout; <br/> private int tablerowid; <br/> private int dynamicbt NID; <br/> private int dynamicpreid; <br/> private int dynamicaftid; <br/> private list <View> idlist = new arraylist <View> (); <br/>/** <br/> * @ Param context <br/> */<br/> Public dynamiccontrol (context) {<br/> This (context, null ); <br/>}< br/>/** <br/> * @ Param context <br/> * @ Param attrs <br/> */<br/> Public dynamiccontrol (context, attributeset attrs) {<br/> super (context, attrs); <B R/> This. minflater = layoutinflater. from (context); <br/> layout = (tablelayout) minflater. inflate (R. layout. dynamicvalues, null); <br/> // set the default value <br/> View view = layout. findviewbyid (R. id. dynamic_btn_1); <br/> View. setonclicklistener (getclicklistener (); <br/> idlist. add (View); <br/> tablerowid = R. id. dynamic_row_1; <br/> dynamicbtnid = R. id. dynamic_btn_1; <br/> dynamicpreid = R. id. dynamic_pre_1; <br/> LS-DYNA Micaftid = R. id. dynamic_aft_1; <br/> addview (layout); <br/>}< br/> private onclicklistener getclicklistener () {<br/> return New onclicklistener () {<br/> @ override <br/> Public void onclick (view v) {<br/> clicklogic (V); <br/>}< br/> }; <br/>}< br/> private void clicklogic (view v) {<br/> If (! Idlist. isempty () {<br/> If (V = idlist. get (idlist. size ()-1) {<br/> addcontrols (V); <br/>}else {<br/> removecontrols (v ); <br/>}< br/> private tablerow getnewrow () {<br/> tablerow ROW = getdefaulttablerow (); <br/> row. addview (getdefaultimagebutton (); <br/> row. addview (getdefaultprevedittext (); <br/> row. addview (getdefatexttextview (); <br/> row. addview (getdefaultafteredittext (); <br/> return row; <br/>}< br/> private void addcontrols (view v) {<br/> layout. addview (getnewrow (); <br/> (imagebutton) V ). setimageresource (R. drawable. add_btn); <br/>}< br/>/** <br/> * creation date: 11:02:39 PM <br/> * remove the selected control <br/> * @ Param v <br/> * @ author jie. xiang <br/> */<br/> private void removecontrols (view v) {<br/> If (idlist. size () <= 1) {<br/> return; <br/>}< br/> tablerow parent = (tablerow) v. getparent (); <br/> (tablelayout) parent. getparent ()). removeview (parent); <br/> idlist. remove (V); <br/>}< br/> private tablerow getdefaulttablerow () {<br/> tablerowid ++; <br/> tablerow ROW = new tablerow (getcontext (); <br/> android. widget. tablerow. layoutparams Params = new android. widget. tablerow. layoutparams (); <br/> Params. width = android. widget. tablerow. layoutparams. wrap_content; <br/> Params. height = android. widget. tablerow. layoutparams. wrap_content; <br/> row. setlayoutparams (Params); <br/> row. setgravity (gravity. center); <br/> row. setid (tablerowid); <br/> return row; <br/>}< br/> private edittext getdefaultedittext () {<br/> edittext text = new edittext (getcontext (); <br/> android. widget. tablerow. layoutparams Params = new android. widget. tablerow. layoutparams (); <br/> Params. width = android. widget. tablerow. layoutparams. wrap_content; <br/> Params. height = android. widget. tablerow. layoutparams. wrap_content; <br/> text. setlayoutparams (Params); <br/> // text. set <br/> text. setmaxlines (1); <br/> text. setwidth (80); <br/> return text; <br/>}< br/> private edittext getdefadefaprevedittext () {<br/> dynamicpreid ++; <br/> edittext text = getdefaultedittext (); <br/> text. setid (dynamicpreid); <br/> return text; <br/>}< br/> private edittext getdefaultafteredittext () {<br/> dynamicaftid ++; <br/> edittext text = getdefaultedittext (); <br/> text. setid (dynamicaftid); <br/> return text; <br/>}< br/> private textview getdefatexttextview () {<br/> textview view = new textview (getcontext (); <br/> android. widget. tablerow. layoutparams Params = new android. widget. tablerow. layoutparams (); <br/> Params. width = android. widget. tablerow. layoutparams. wrap_content; <br/> Params. height = android. widget. tablerow. layoutparams. wrap_content; <br/> View. setlayoutparams (Params); <br/> View. settext ("-"); <br/> return view; <br/>}< br/> private imagebutton getdefaultimagebutton () {<br/> dynamicbtnid ++; <br/> imagebutton BTN = new imagebutton (getcontext (); <br/> BTN. setadjustviewbounds (true); <br/> android. widget. tablerow. layoutparams Params = new android. widget. tablerow. layoutparams (); <br/> Params. width = android. widget. tablerow. layoutparams. wrap_content; <br/> Params. height = android. widget. tablerow. layoutparams. wrap_content; <br/> BTN. setlayoutparams (Params); <br/> BTN. setimageresource (R. drawable. add_btn); <br/> BTN. setbackgroundresource (R. drawable. add_btn); <br/> BTN. setid (dynamicbtnid); <br/> BTN. setonclicklistener (getclicklistener (); <br/> idlist. add (BTN); <br/> return BTN; <br/>}< br/>
Dynamicvalues. xml
<? XML version = "1.0" encoding = "UTF-8"?> <Br/> <tablelayout Android: Id = "@ + ID/dynamic_parent" <br/> Android: layout_width = "fill_parent" Android: layout_height = "fill_parent" <br/> xmlns: Android = "http://schemas.android.com/apk/res/android"> <br/> <tablerow Android: Id = "@ + ID/dynamic_row_1" <br/> Android: layout_width = "wrap_content" Android: layout_height = "wrap_content" <br/> Android: gravity = "center"> <br/> <imagebutton Android: src = "@ drawable/add_btn" <br/> Android: adjustviewbounds = "true" Android: layout_height = "wrap_content" <br/> Android: id = "@ + ID/dynamic_btn_1" Android: layout_width = "wrap_content"> </imagebutton> <br/> <edittext Android: text = "" Android: id = "@ + ID/dynamic_pre_1" <br/> Android: width = "80px" Android: layout_width = "wrap_content" <br/> Android: maxlines = "1" Android: layout_height = "wrap_content" <br/> Android: Numeric = "integer"> </edittext> <br/> <textview Android: text = "-" Android: layout_width = "wrap_content" <br/> Android: layout_height = "wrap_content"> </textview> <br/> <edittext Android: text = "" Android: id = "@ + ID/dynamic_aft_1" <br/> Android: width = "80px" Android: maxlines = "1" Android: layout_width = "wrap_content" <br/> Android: layout_height = "wrap_content" Android: Numeric = "integer"> </edittext> <br/> </tablerow> <br/> </tablelayout> <br/>
The interface effect is as follows:
Alas, I am too busy at work, I don't have much time. This interface is too rough. At the same time, imagebutton is still waiting to be adjusted. This will be followed up later. I am not familiar with the API very soon.