android:editable="false"
Поскольку это deprecated, вы должны установить android:inputType="none"
отключить вход на EditText
. Если вы хотите связать inputType
с EditText
с MvvmCross, вы можете создать Value Converter, который берет входное значение из ViewModel и возвращает ответ типа Android.Text.InputTypes
.
Пример реализации:
Добавить класс в Android проекта со следующими в нем:
public class EditTextEnabledValueConverter : MvxValueConverter<bool, InputTypes>
{
protected override InputTypes Convert(bool value, Type targetType, object parameter, CultureInfo culture)
{
if (value)
return InputTypes.ClassNumber | InputTypes.NumberFlagDecimal | InputTypes.NumberFlagSigned;
return InputTypes.Null;
}
}
и в файле макета:
<EditText
style="@style/InputNumbersEditText"
android:layout_weight="1"
android:layout_width="0dp"
android:focusable="true"
android:layout_height="wrap_content"
local:MvxBind="Text Age; InputType EditTextEnabled(MyProperty)" />
Где MyProperty является bindable boolean на вашем ViewModel. Вы можете использовать любой тип как тип источника, он не должен быть логическим. Счастливое преобразование!
не могли бы вы проиллюстрировать пример кода? – hotspring
Конечно, я отредактирую свой пост за секунду. –
Работает очень хорошо. Но клавиатура не является числовой или десятичной. появляется стандартная алфавитная клавиатура. – hotspring