Android custom dynamic controls

Source: Internet
Author: User

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.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.