如何在Kotlin中根据用户输入的整数动态调整EditText输入框数量?
动态生成对应数量EditText的实现方案
1. 接收前一个Activity传递的数值
首先在目标Activity中,通过Intent获取前一个页面传递的整数:
int inputCount = getIntent().getIntExtra("INPUT_COUNT", 0);
这里第二个参数是默认值,当未接收到有效数值时会返回0,你可以根据需求调整。
2. 准备布局容器
在目标Activity的布局文件中,添加一个可容纳多个View的容器(推荐用LinearLayout搭配ScrollView,避免数量过多时超出屏幕):
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:id="@+id/edit_text_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp" android:gap="8dp"/> </ScrollView>
3. 动态创建EditText并添加到容器
在目标Activity的onCreate方法中,循环创建对应数量的EditText,设置必要属性后添加到容器中:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); int inputCount = getIntent().getIntExtra("INPUT_COUNT", 0); LinearLayout container = findViewById(R.id.edit_text_container); // 处理数量为0的情况 if (inputCount <= 0) { TextView hintTv = new TextView(this); hintTv.setText("请输入有效数量"); hintTv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16); container.addView(hintTv); return; } // 循环生成EditText for (int i = 0; i < inputCount; i++) { EditText editText = new EditText(this); // 设置布局参数 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT ); editText.setLayoutParams(params); // 配置输入框属性 editText.setHint("输入框 " + (i + 1)); editText.setInputType(InputType.TYPE_CLASS_TEXT); // 可根据需求改为数字等类型 editText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16); editText.setBackgroundResource(android.R.drawable.edit_text); // 给每个输入框设置唯一ID(方便后续获取内容) editText.setId(View.generateViewId()); container.addView(editText); } }
4. 后续获取输入内容(可选)
如果需要获取所有动态生成EditText的内容,可以遍历容器的子View:
// 示例:获取所有输入框内容 List<String> inputContents = new ArrayList<>(); for (int i = 0; i < container.getChildCount(); i++) { View child = container.getChildAt(i); if (child instanceof EditText) { EditText et = (EditText) child; inputContents.add(et.getText().toString().trim()); } }
内容的提问来源于stack exchange,提问作者Adrienne Kline
相关产品推荐
相关产品推荐

