TextInputEditText исправить длину символа с подчеркиванием пользовательского дизайна

Я хочу спроектировать, как показано ниже:

Прежде чем ввести пользовательский ввод:

введите здесь описание изображения

Вводимые пользователем числа

введите здесь описание изображения

Можно ли расширить TextInputEditText для выполнения этого запроса?

Я искал обсуждение дизайна,

как я могу подчеркнуть каждый символ в тексте редактирования?

Можно ли подчеркнуть текст в макете Android?

Но, похоже, не совсем соответствует тому, что я хочу.

Сначала я думал, что буду использовать letterSpacing, но с подчеркиванием возникла проблема. Также для разных разрешений экрана и размера шрифта проблема может заключаться в том, что letterSpacing не помещается в одну строку. Мне нужно убедиться, что это будет в одной строке.

Любое предложение для достижения этого? Если бы у меня был лучший способ, я бы хотел избежать использования четырех текстов редактирования для достижения, возможно ли изменить в одном editText?


person rodent_la    schedule 31.05.2017    source источник
comment
вы можете сделать это представление, используя 4 различных текста редактирования и программно управлять фокусом каждого текста редактирования. чтобы получить значение из значений слияния edittext каждого текстового поля. установить максимальную длину каждого текстового поля 1   -  person Aashutosh Kumar    schedule 31.05.2017
comment
Большое спасибо. Эта реализация также приходит мне на ум. Мне просто любопытно узнать, есть ли другие более элегантные способы обработки такого запроса пользовательского интерфейса?   -  person rodent_la    schedule 31.05.2017
comment
пожалуйста, проверьте мой ответ @rodent_la   -  person AskNilesh    schedule 31.05.2017


Ответы (1)


попробуй это мой друг

создайте один XML-файл макета, подобный этому

                <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="30dp"
                android:layout_marginLeft="60dp"
                android:layout_marginRight="60dp"
                android:layout_marginTop="20dp"
                android:orientation="horizontal"
                android:weightSum="4">

                <EditText
                    android:id="@+id/edDigit1"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:hint="1"
                    android:imeOptions="actionNext"
                    android:inputType="number"
                    android:maxLength="1" />

                <EditText
                    android:id="@+id/edDigit2"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:hint="2"
                    android:imeOptions="actionNext"
                    android:inputType="number"
                    android:maxLength="1" />

                <EditText
                    android:id="@+id/edDigit3"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:hint="3"
                    android:imeOptions="actionNext"
                    android:inputType="number"
                    android:maxLength="1" />

                <EditText
                    android:id="@+id/edDigit4"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:hint="4"
                    android:imeOptions="actionNext"
                    android:inputType="number"
                    android:maxLength="1" />

            </LinearLayout>

**now in your activity file**

      EditText edDigit1, edDigit2, edDigit3, edDigit4;
      edDigit1 = (EditText) findViewById(R.id.edDigit1);
      edDigit2 = (EditText) findViewById(R.id.edDigit2);
      edDigit3 = (EditText) findViewById(R.id.edDigit3);
      edDigit4 = (EditText) findViewById(R.id.edDigit4);

     edDigit1.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                if (edDigit1.getText().toString().equals("")) {
                    edDigit1.requestFocus();
                } else {
                    edDigit2.requestFocus();
                }

            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
        edDigit2.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                if (edDigit2.getText().toString().equals("")) {
                    edDigit2.requestFocus();
                } else {
                    edDigit3.requestFocus();
                }

            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
        edDigit3.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                if (edDigit3.getText().toString().equals("")) {
                    edDigit3.requestFocus();
                } else {
                    edDigit4.requestFocus();
                }


            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
person AskNilesh    schedule 31.05.2017
comment
Большое спасибо. Я попробую. - person rodent_la; 31.05.2017