我正在尝试将LinearLayout绑定到根据ViewModel State显示/隐藏。 出于某种原因,它适用于按钮和文本视图,但不适用于LinearLayout。
可能是什么原因?
<LinearLayout
android:orientation="vertical"
android:minWidth="25dp"
android:minHeight="25dp"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
local:MvxBind="Visibility WaitingForConfirmation">
答案 0 :(得分:4)
我刚尝试使用bool Visible
伪属性进行快速测试,它适用于TextView
和LinearLayout
<TextView
android:text="Random text"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
local:MvxBind="Visible Generosity > 12" />
<LinearLayout
android:orientation="vertical"
android:minWidth="25dp"
android:minHeight="25dp"
android:background="#ff0000"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
local:MvxBind="Visible Generosity > 12" />
Visibility
属性绑定到相同的底层Android隐藏/显示机制 - 它只使用Visibility插件转换bool
- &gt; Visibility
枚举 - 因此代码应该适用于那也是......
更新:我也尝试过Droid示例https://github.com/slodge/MvvmCross-Tutorials/tree/master/ValueConversion
中的LinearLayout
此示例工作正常:
什么是WaitingForConfirmation
?我怀疑它是一个bool,在这种情况下你需要使用可见性转换器,就像在Windows绑定中一样。 Visibility插件中提供了标准可见性转换器,可以使用:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="200dp"
android:background="#ff0000"
local:MvxBind="Visibility MakeItVisible, Converter=Visibility" />
最后一点说明:MvvmCross确实会继续调整(并希望改进)它的绑定类型转换 - 所以在某些时候你可以通过bool
使用Visibility enums
来逃避 - 但是这个可能永远不会被推荐练习 - 通常最好使用值转换器来控制绑定操作(就像在Windows中一样)。