как сделать флажок редактируемым при нажатии в андроид студии - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь создать список дел в Android Studio с флажками, идея состоит в том, чтобы иметь возможность добавлять флажки в линейный макет каждый раз, когда я нажимаю кнопку.это довольно просто, но я хочу иметь возможность изменять текст флажка, когда я нажимаю на него после того, как я его создал.

Я попытался создать текстовое поле без текста и просто поместить текст рядом с ним, ноя не нашел способ разместить их обоих на одной линии линейного макета.простой текст просто появляется в строке внизу.я хотел бы знать, есть ли какой-нибудь способ сделать пользовательский компонент, который сделает текст флажка редактируемым при щелчке по тексту, и флажок при щелчке на самом флажке, чтобы я мог поместить его в линейный макет.

это код, который я сделал, чтобы добавить еще один флажок в линейный макет:

    public void click(View v)
    {
        LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        CheckBox cb=new CheckBox(this);
        cb.setLayoutParams(lparams);
        cb.setText(t.getText());
        this.ll.addView(cb);
    }

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Установите флажок, что это: Источник флажка

Теперь вы знаете, что у вас есть "CompoundButton", который представляет собой кнопку, если вы посмотрите на источник

, который является TextView, если вы проверяете источник source

EditText, который используется для редактирования текстов, это TextView, если вы проверяете источник

Таким образом, родительский объект - это TextView, и в вашем пользовательском компоненте вы должны объединить добавленные функции и значения EditText с вашим CheckBox.Если у вас есть время и вам не лень, вы можете сделать это наверняка, просто расширите CheckBox и добавьте событие и обработку.

Решение, предлагаемое BAHMAN, быстрое и простое (но недостаточно элегантное для меня), если вам нужен быстрый результат, вы можете сделать это решение или на его основе:

Объявите представление с именем «контейнер» в макете .xml.В вашем коде (во время выполнения) сначала добавьте флажок.В событии Click снимите флажок (если вы не добавлены в .xml, но в коде вы можете это сделать) и добавьте текст редактирования, где вы слушаете завершающее событие редактирования.Затем вы удалите текст редактирования и поставьте флажок обратно.В этом случае вы не удвоили компоненты и прослушиватели.

Поскольку это список TODO, может иметь много флажков, я бы выбрал последнее предложенное мной решение.Если вы делаете дорогой, коммерческий продукт, то первое предложенное мной решение.

0 голосов
/ 21 декабря 2018

Вместо добавления флажка к вашему макету вы можете добавить горизонтальный линейный макет или пользовательский вид с расширением LinearLayout, содержащим CheckBox и EditText при первой установке видимости CheckBox, которая исчезнет при входе пользователякакой-то текст в EditText и нажимает. Введите set CheckBox label, равный тексту EditText, затем установите видимость EditText в исходное состояние и установите Visibility CheckBox в значение Visible.Опять же, когда установлен флажок, выполните аналогичную работу.

Лучше создать пользовательское представление (класс, расширяющий LinearLayout) и выполнить вышеупомянутую работу в этом классе.и каждый раз, когда вам нужен новый флажок, вы можете добавить этот пользовательский вид в свой макет вместо добавления флажка в свой макет.

...