2016-06-06 1 views
1

Интересно, как бы я смог включить и отключить редактировать функцию в EditText в mvvmcross.EditText Edit Feature в MVVMCross

<EditText 
    style="@style/InputNumbersEditText" 
    android:layout_weight="1" 
    android:layout_width="0dp" 
    android:focusable="true" 
    android:layout_height="wrap_content" 
    android:inputType="numberDecimal|numberSigned" 
    local:MvxBind="Text Age" /> 

ответ

3

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. Вы можете использовать любой тип как тип источника, он не должен быть логическим. Счастливое преобразование!

+0

не могли бы вы проиллюстрировать пример кода? – hotspring

+0

Конечно, я отредактирую свой пост за секунду. –

+0

Работает очень хорошо. Но клавиатура не является числовой или десятичной. появляется стандартная алфавитная клавиатура. – hotspring

 Смежные вопросы

  • Нет связанных вопросов^_^