#android #kotlin #textedit
#Android #kotlin #текстовый редактор
Вопрос:
Я создаю активность профиля, и каждая строка содержит с одной стороны textview для информации о строке, например: Name, с другой стороны, у меня есть EditText для изменения информации при нажатии на validate. вот XML для каждой строки :
<FrameLayout
android:id="@ id/first_name_row"
android:layout_marginBottom="@dimen/profile_row_bottom_margin"
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:foreground="?android:attr/selectableItemBackground">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="@dimen/small_item_list_height"
android:paddingEnd="@dimen/default_padding"
android:paddingLeft="@dimen/default_padding"
android:paddingRight="@dimen/default_padding"
android:paddingStart="@dimen/default_padding">
<TextView
android:includeFontPadding="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/default_padding"
android:layout_marginRight="@dimen/default_padding"
android:text="@string/acct_first_name"
android:textSize="@dimen/profile_row_text_size" />
<EditText
android:id="@ id/acc_name_first"
android:includeFontPadding="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/default_padding"
android:layout_marginRight="@dimen/default_padding"
android:background="@null"
android:text="@string/acct_first_name"
android:enabled="false"
android:focusable="false"
android:cursorVisible="false"
android:textSize="@dimen/profile_row_text_size" />
</RelativeLayout>
</FrameLayout>
Проблема в том, что я добавил android:background="@null"
, потому что мне не нужна панель под полем. но когда я делаю это, я удаляю все символы из поля, оно становится пустым, и если я переключаюсь на другое поле, я не могу щелкнуть по пустому полю.
Здесь у вас есть изображение, поле Nom выбрано, но мы видим, что поле prename пусто, поэтому я не могу его выбрать. кроме того, поле электронной почты работает, потому что я не ставил backgound = null
, но я не хочу, чтобы под ним была панель.
Есть ли способ создать Textedit, под которым нет строки, но который все еще может быть интерактивным, если он пуст?
Ответ №1:
EditText имеет android:layout_width=»wrap_content» как только вы удалите все символы с равными нулю, в следующий раз, даже если вы включите его, вы не сможете щелкнуть по нему. Используйте атрибут android: minEms=»1″.
Комментарии:
1. Это не проблема, у меня есть кнопка редактирования, и когда я нажимаю на нее, я делаю: acc_name_first.setFocusable(true) acc_name_first.setEnabled(true) acc_name_first.setCursorVisible(true) acc_name_first.isFocusableInTouchMode = true Мне это нужно, потому что сначала я хочу видеть только информацию о полях, но когда я нажимаю на кнопку редактирования, то появляется поля становятся доступными для записи. Также, когда я пытаюсь удалить его, у меня возникает та же проблема, когда поле пустое, я не могу его щелкнуть.
2. Несмотря на то, что он перемещает курсор textedit слева, он работает благодаря
Ответ №2:
С моей точки зрения, будет лучше просто добавить минимальную ширину к редактируемому тексту:
<EditText
android:id="@ id/acc_name_first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginEnd="@dimen/default_padding"
android:layout_marginRight="@dimen/default_padding"
android:background="@null"
android:cursorVisible="false"
android:enabled="false"
android:focusable="false"
android:includeFontPadding="false"
android:minWidth="50dp"
android:text="@string/acct_first_name"
android:textSize="@dimen/profile_row_text_size" />