我想根据条件动态创建EditTextFields。条件是,如果我开始在第一个EditTextField上打字,它将在底部创建一个EditTextField,并在第二个时候创建第三个EditTextField。同样,如果上EditTextField中没有文本,我想删除底部文本。谢谢。在EditText上输入时在视图中添加EditText字段
回答
使用父视图,如ScrollView
,您知道您可以添加灵活的内容。然后使用TextWatcher
a/k/a a text change listener。然后,您可以创建一个新的文本视图,如果将文本输入EditText
字段中,您将添加到ScrollView
。
为了整洁,我可能会创建一个自定义的TextView
类,它包含这个文本更改侦听器和复制检查。这里的例子,你如何可以添加一个TextView
//instance variable
private LinearLayout containerLayout;
private newTextViewCreated = false;
//initialize your conatinerLayout before you use it
//and create your first edit text field
public void onCreate(Bundle savedInstaceState){
containerLayout = (LinearLayout)findViewById(R.id.conatinerLinearLayout);
createEditText();
}
private void createEditText(){
EditText editText = new editText(this);
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(count > 0 && !newTextViewCreated){
createEditText();
newTextViewCreated = true;
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
//TODO Auto-generated method stub
}
});
containerLayout.addView(editText);
}
我没有测试了这一点,现在我正在写,但这里是我在想什么。请阅读TextWatcher如何工作的说明,以便了解内部方法。你将不得不使用条件语句,但是你在做什么是监听输入字符数量的变化,然后在向每个文本视图添加字符时进行递归调用以创建额外的视图。我使用布尔标志来显示视图何时被创建,所以每次改变字符时我们都不会添加一个。根据您的评论,我移出了createEditText方法。如果你自己创建了EditText
课程,你可以添加一个方法来设置/获取这个TextView
是否跨越另一个的状态。要删除你只需添加一个删除条件,将删除线性布局的视图。
但是如何动态添加和删除EditText字段。 – user2760685
您将使用'TextWatcher'。它会告诉你一切你需要知道的EditText中的内容。我将在上面添加一个示例。 – Rarw
在内部类中使用非最终变量是不可能的。 – user2760685
显示/隐藏他们在您的布局,如果你知道需要EDITTEXT领域的总金额或编程添加它们像这样:
EditText myET = new EditText(MyActivity.this);
myET.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT));
LayoutContentView.addView(myET);
然后检查:
if (myET.getText().toString().trim().equals(""))
{
//Don't Show
}else{
//SHOW
}
SO问题可以帮助: https://stackoverflow.com/a/6792359/350421
EditText toAdd = new EditText(this);
list.add(toAdd);
号动态地,我们应该添加任意数量的editText字段。 – user2760685
这将有助于:http://stackoverflow.com/a/6792359/350421 – jasonflaherty
用户TextWatcher 与TextWatcher实现您的活动,并重写方法
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
是的,我试过在onTextChanged。但是如何动态添加和删除EditText字段。 – user2760685
- 1. EditText字段没有输入
- 2. 同时输入两个edittext字段
- 3. 添加输入类型时EditText崩溃
- 4. 编号在输入时不显示在editText字段中(Android 2.2)
- 5. 无法在edittext上输入文字android
- 6. Android - 在editText字段中没有输入时程序崩溃
- 7. 如何在EditText上添加图像
- 8. 在片段中动态添加Edittext&Imagebutton
- 9. 在EditText中输入的文字前添加空格?
- 10. 当在AlertDialog中选择positiveButton时,将editText输入添加到recyclerView
- 11. 如何在EditText中输入时过滤列表视图?
- 12. EditText - 在输入时从EditText中获取文本
- 13. 输入时在EditText中清除文本
- 14. 在画布中添加EditText
- 15. EditText在列表视图中?
- 16. 在EditText中自动添加字符
- 17. 如何在editText中添加数字
- 18. 当我动态添加视图时,EditText上的键盘重叠
- 19. 如何在Android的EditText视图中添加图标?
- 20. 将editText添加到自定义视图
- 21. 将edittext添加到自定义视图
- 22. 在片段上输入EditText,并填写所有其他片段
- 23. 如何将图像放入EditText字段?
- 24. Android EditText输入
- 25. EditText setText()在多个EditText视图上设置文本
- 26. 在输入上展开EditText宽度
- 27. 在EditText上输入两次onKey键
- 28. Android EditText:输入文字
- 29. EditText输入限制500字?
- 30. 如何在android中将视图添加到EditText中?
你只会有3个EDITTEXT领域?如果是这样,我会在视图中创建它们,并在文本位于其他editText字段时显示/隐藏。你有一些代码吗?你有什么尝试? – jasonflaherty
我同意显示/隐藏方法可能是最简单的,如果你有一个具体数量的最大的领域之前已知的领域。 – nhgrif
否3 editText字段。动态地,我们应该添加任意数量的editText字段。 – user2760685