Android 我想添加动态布局与文本视图和编辑按钮上的文本点击N级
当点击添加手机文本时,我想动态添加视图添加手机下面的视图:“手机”是文本视图,右侧是编辑文本 这需要用于N级..当用户单击添加电话视图时将添加Android 我想添加动态布局与文本视图和编辑按钮上的文本点击N级,android,user-interface,android-edittext,textview,Android,User Interface,Android Edittext,Textview,当点击添加手机文本时,我想动态添加视图添加手机下面的视图:“手机”是文本视图,右侧是编辑文本 这需要用于N级..当用户单击添加电话视图时将添加 如何执行此操作?请尝试此代码。这可能会对您有所帮助 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match
如何执行此操作?请尝试此代码。这可能会对您有所帮助
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/btn_Click"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="Click" />
<LinearLayout
android:id="@+id/linearView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
</LinearLayout>
因此,要从EditText获取值,请使用以下代码。我在Toast中显示了该值,您可以使用字符串数组来存储所有动态创建的EditText值
public void getAllEditTextValues(View view) {
View v = null;
for (int i = 0; i < linearView.getChildCount(); i++) {
v = linearView.getChildAt(i);
if (v instanceof LinearLayout) {
View tempView = ((LinearLayout) v).getChildAt(0);
View et = ((LinearLayout) tempView).getChildAt(1);
String etValue = null;
if (et instanceof EditText) {
etValue = ((EditText) et).getText().toString();
}
Toast.makeText(this, "" + etValue, Toast.LENGTH_SHORT).show();
// Use Array to Store all values of EditText
}
}
}
将XML创建为自定义_row.XML,代码为:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="0dp"
android:layout_weight="0.1"
android:id="@+id/crossImage"
android:layout_gravity="center_vertical"
android:layout_height="wrap_content"
android:src="@drawable/cross_image"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.45"
android:id="@+id/columnSpinner"
android:text="demo"
android:layout_gravity="center"/>
<EditText
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.45"
android:id="@+id/contentValueEditText"/>
</LinearLayout>
现在,您可以通过以下代码访问编辑文本:
LinearLayout singleLayout = (LinearLayout)linearView.findViewWithTag("LinearLayout"+index);
EditText editText = singleLayout.findViewWithTag("EditText"+index);
我尝试添加动态视图,但没有在图像中获得类似视图的显示,而且我只能添加一个视图..并且在获取添加的edittext ID时遇到问题dynamicallylol@KulsDroid想说,到目前为止您尝试了哪些代码?可能重复了类似的尝试:LinearLayout ll=IDR.id.l_电话的LinearLayoutIndViewByIDR.id.l_电话;//add edittext edittext et=new EditTextthis;LinearLayout.LayoutParams p=新的LinearLayout.LayoutParamsViewGroup.LayoutParams.MATCH_父级,ViewGroup.LayoutParams.WRAP_内容;et.setLayoutParamsp;et.setTextText;et.setTextColorgetResources.getColorR.color.black;et.setIdnumberOfLines+1;ll.addvieet;numberOfLines++;我添加了edittext,但我无法实现类似于我上传的图像的设计谢谢,但我想你在写这篇文章之前错过了我的评论。ans,我已经通过创建子xml并放大子xml的视图得到了这一点。无论如何,谢谢你。。我现在面临的一个问题是,如何获得动态创建的edittext的价值?这是因为我们知道动态创建的布局层次结构。这里我们只需要检查视图是否有EditText实例。因为我们知道EditText是线性布局的第二个子级,所以我使用索引1来获取EditText的视图,即getChildAt1。这可能会对您有所帮助。谢谢..我正在获取edittext的值,但根据图片,UI不正确。。当我添加视图动态..它被添加到我的“添加电话”文本上方,并且水平灰线也丢失。。你能帮忙吗?真的很感谢你的帮助。谢谢你。好的,我会帮你处理丢失的水平灰线。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/linearView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
<Button
android:id="@+id/btn_Click"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="Click" />
</LinearLayout>
int index=0;
linearView = (LinearLayout) findViewById(R.id.linearView);
@OnClick(R.id.btn_Click)
public void click() {
final LinearLayout singleInsertView1 = (LinearLayout) LayoutInflater.from(QueryRunner.this).inflate(R.layout.insert_single_item, null);
EditText editText = (EditText)singleInsertView1.findViewById(R.id.contentValueEditText);
editText.setTag("EditText"+index);
singleInsertView1.setTag("LinearLayout"+index);
contentViewAdder.addView(singleInsertView1);
index++;
}
LinearLayout singleLayout = (LinearLayout)linearView.findViewWithTag("LinearLayout"+index);
EditText editText = singleLayout.findViewWithTag("EditText"+index);