Как разместить курсор с кликом в тексте в EditText? (Раскрыты) - PullRequest
0 голосов
/ 23 апреля 2020

Обновление: -----> РЕШЕНИЕ

Поскольку я задал этот вопрос, я прочитал, что если вы отключите программную клавиатуру с помощью команды setInputType(InputType.TYPE_NULL);, которую я сделал, что он отключит (мигающий) курсор, что он и делает.

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

EditText наследует от TextView, ( никто бы не подумал, что этот метод будет частью TextView ), который имеет метод с именем setShowSoftInputOnFocus(bool);. Этот метод отключит программную клавиатуру без отключения курсора.


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

Существует кодовое решение Java -> Установить позицию курсора в тексте редактирования в соответствии с кликом пользователя

Нет ли XML атрибутов для выполнения sh это?

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Если вы хотите установить от initial cursor position до xml, посмотрите на мой ответ

Возможно, создайте собственный EditText и повторно используйте в любом макете xml, настройте его так, чтобы сделать что вы хотите:

теперь в res/values/attrs.xml

    <resources>
    <declare-styleable name="MyCustomEditText">

      <attr name="cursor_position" format="string" />

    </declare-styleable>
    </resources>

использовать пользовательский текст редактирования в xml макете

<com.example.yourpackage.CustomEditText
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:cursor_position="5" //it can be any index you want
      ..........

пользовательский текст для редактирования

class CustomEditText extends EditText
 {
    public CustomEditText(Context context) {
        super(context);
    }
    public CustomEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public CustomEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);

          //get attribute of cursor_position
          TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyCustomEditText, defStyle, 0);

          String index = a.getString(R.styleable.MyCustomEditText_cursor_position);
          //set the cursor index
          this.setSelection(Integer.parseInt(index));



    }
}
0 голосов
/ 23 апреля 2020

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

EditText editText = findViewById(R.id.editText);
editText.setSelection(3); // Custom point Cursor

Если вы подразумевали, что пользователь должен иметь возможность использовать курсор, то просто в качестве хорошей практики установите курсор на последний:

EditText editText = findViewById(R.id.editText);
editText.setSelection(editText.getText().length()); // End point Cursor

Если вы хотите использовать XML и определить это как свойство, то вам нужно решить, должно ли это быть stati c или скорее в зависимости от пользователя:

ЕСЛИ СОСТОЯНИЕ C, ИСПОЛЬЗУЙТЕ СЛЕДУЮЩИЙ АТРИБУТ

android.selection

ЕСЛИ НЕ СОСТОЯНИЕ C И ЗАВИСИТ ОТ ПОЛЬЗОВАТЕЛЯ

В этом В этом случае вам необходимо связать ваш XML layout file с соответствующим ViewController, который может быть Activity или Fragment и установите значение Int, которое может прочитать файл макета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...