2016-06-06 39 views
1

我不知道我怎么会能够能够在EditText禁用编辑功能在mvvmcross的EditText编辑功能在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禁止输入。如果您想要将EditTextinputType与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的是您的ViewModel上的可绑定布尔值。您可以使用任何类型作为源类型,它不一定是布尔值。开心转换!

+0

可否请您举例说明一个代码示例? – hotspring

+0

当然,我会在一秒内编辑我的帖子。 –

+0

它工作得很好。但键盘不是数字或小数。它是默认的字母键盘显示。 – hotspring