Я хочу динамически создавать EditTextFields в зависимости от условия. Условие заключается в том, что если я начну печатать на первом EditTextField, он создаст еще один EditTextField внизу и создаст третий EditTextField, когда я начну печатать на втором. Аналогично, я хочу удалить нижний текст, если в верхнем EditTextField нет текста. Благодарю.Добавление полей EditText при просмотре при вводе текста EditText
ответ
Используйте родительский вид, например ScrollView
, который, как вы знаете, вы можете добавить гибкий контент. Затем используйте TextWatcher
a/k/a a text change listener. Затем вы можете создать новое текстовое представление, которое вы бы добавили в ScrollView
, если текст был введен в поле EditText
.
Для аккуратности я бы, вероятно, создал пользовательский класс 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. ActionBar развернуть при вводе текста в EditText
- 2. TextView перемещается при вводе текста в EditText
- 3. EditText - Получить текст из EditText при вводе
- 4. Очистить TextView при вводе EditText
- 5. actionBar goned при вводе edittext
- 6. EditText - изменить текст при вводе
- 7. изображение перекрытие edittext при вводе
- 8. Мягкая клавиатура скрывается при вводе текста в Android EditText
- 9. Цвет текста EditText при подсветке
- 10. Экран не перемещается при вводе текста в EditText Android
- 11. Android: изменение прозрачности EditText при щелчке и вводе текста
- 12. Android Multiline Edittext сжимает/дезориентирует фон при вводе текста
- 13. Как реализовать действие при вводе текста в EditText
- 14. Размер экрана Android Edittext автоматически изменяется при вводе большого текста
- 15. EditText, проходящий через макет, при вводе
- 16. Только изменить положение editText при вводе android
- 17. положить символ на edittext при вводе
- 18. Ошибка при настройке текста в edittext
- 19. Снимите подчеркивание при вводе в edittext в Android
- 20. Android Ошибки при установке текста на EditText
- 21. onClick сбой при получении текста из editText
- 22. Сбой приложения при настройке текста EditText
- 23. Ошибка при получении текста от edittext-Android
- 24. Автозагрузка Android EditText (RecyclerView) при редактировании EditText
- 25. Изменить текст в EditText при нажатии EditText
- 26. Подсказка зала при вводе в EditText на Android
- 27. Смена текста с помощью 2 полей EditText
- 28. Как предотвратить изменение размера EditText при вводе пользователем?
- 29. Добавление/вычитание двух полей editText вместе
- 30. Редактировать: сменить фоновое изображение при вводе текста
Вы только собираетесь иметь 3 EditText поля? Если это так, я бы создавал их в представлении и показывал/скрывал, если текст находится в другом поле editText. У вас есть код? Что вы пробовали? – jasonflaherty
Я согласен с тем, что метод show/hide, вероятно, самый простой, если у вас есть конкретное количество полей max, известных перед рукой. – nhgrif
Нет трех полей editText. Динамически мы должны добавить любое количество полей editText. – user2760685