Android 动态生成 EditTest
这几天,开始一个项目,需要一个小效果,就是一个输入邮箱地址的EditTest 需要动态的添加。默认有两个,然后最多5个,手机的屏幕总是有限的
好的 ,这就上代码了
布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:orientation="vertical"> <TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:id="@+id/layout_ll" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="1"/> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="2"/> </LinearLayout> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="添加" android:onClick="onInsert"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="最后一个Edit的数据" android:onClick="onLast"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="倒数第二个Edit的数据" android:onClick="onFast"/> </LinearLayout>
这里时用一个有ID 的 LinearLayout 后面拿到它,向它加入EditTest 就OK了。
java 代码
package com.quseit.listedit.listedit; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.Toast; public class MainActivity extends ActionBarActivity { private LinearLayout layout_ll; private int edit_i=0; private String[] Param; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } public void initView(){ layout_ll=(LinearLayout)findViewById(R.id.layout_ll); } public void setEdit(){ EditText edit_l=new EditText(this); edit_i++; edit_l.setTag(edit_i); edit_l.setHint(edit_i + ""); edit_l.setText(edit_i + "zheshi"); layout_ll.addView(edit_l); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } public void onInsert(View v){ setEdit(); } public void onLast(View v){ int i=layout_ll.getChildCount(); EditText e =(EditText)layout_ll.getChildAt(i-1); Toast.makeText(this,e.getText().toString()+":"+i,Toast.LENGTH_SHORT).show(); } public void onFast(View v){ int i=layout_ll.getChildCount(); EditText e =(EditText)layout_ll.getChildAt(i-2); Toast.makeText(this,e.getText().toString()+":"+i,Toast.LENGTH_SHORT).show(); } public void getEditstr(){ int edit_i=layout_ll.getChildCount(); if(edit_i>0) { for (int i = 0; i < edit_i; i++) { EditText edit = (EditText) layout_ll.getChildAt(i); } } } }
其实,实现还是很简单的,只需要 getChildAt() 一下 拿到 LinearLayout里面的 节点 注意LinearLayout最好只放EditTest