Клавиатура Gboard: числовой тип ввода не работает на EditText в ListView
Я использую стандартную клавиатуру Android Gboard. Но есть проблема, когда я использую inputType="number"
на EditText
, Клавиатура показана, но значения типа не отображаются в EditText
, также не получая никакого значения типа в TextWatcher.
EditText
в ListView
Элемент выглядит следующим образом:
<EditText
android:id="@+id/editTextChecked"
android:layout_width="150dp"
android:layout_height="60dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_gravity="center"
android:gravity="center"
android:inputType="number"
android:textColor="#000000" />
ListView
определяется как:
<ListView
android:id="@+id/listViewDialog"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/bottom"
android:layout_below="@+id/editTextSearch"
android:background="@android:color/white"
android:divider="@android:color/darker_gray"
android:dividerHeight="1dp" />
Это мой код TextWather:-
holder.etCheck.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) {
Log.e("text",""+s.toString());
}
@Override
public void afterTextChanged(Editable s) {
}
});
1 ответ
Вещь с TextWatcher
является то, что это не так хорошо работает с ListView
s. Вы должны определить свой собственный обычай TextWatcher
как это:
private class MyCustomEditTextListener implements TextWatcher {
private int position;
public void updatePosition(int position) {
this.position = position;
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) {
// do your operations here.
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) {
}
@Override
public void afterTextChanged(Editable editable) {
Logger.e(TAG, "After" + editable.toString());
}
}
и внутри getView()
сделай это:
((Viewholder) holder).myCustomEditTextListener.updatePosition(position);
Наконец-то внутри вашего viewHolder
инициализировать ваш EditText
и добавить кастом TextWatcher
к этому.