由于android:editable="false"
是deprecated,你应该设置android:inputType="none"
对EditText
禁止输入。如果您想要将EditText
的inputType
与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上的可绑定布尔值。您可以使用任何类型作为源类型,它不一定是布尔值。开心转换!
可否请您举例说明一个代码示例? – hotspring
当然,我会在一秒内编辑我的帖子。 –
它工作得很好。但键盘不是数字或小数。它是默认的字母键盘显示。 – hotspring