在哪里可以看到Android中所有视图类型的所有属性列表?
我得到的印象是android:popupTheme="@style/MyCustomToolber"
没有ImageButton
和enabled
属性。至少,当我在XML中设置它们时,它们不起作用。我还找到了很多"指南"关于如何禁用和/或按下这些按钮。
同时,当我用数据绑定绑定它们时
pressed
他们刚刚工作过。按下并启用。在同一时刻 <ImageButton
android:id="@+id/locate_button"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_toRightOf="@id/bookmark_button"
android:enabled="@{activity.locateEnabled}"
android:pressed="@{activity.locatePressed}"
android:onClick="@{activity.onLocateClick}"
android:src="@drawable/locate_selector"
android:background="@null"
/>
甚至被Android Studion拼写检查报告为未知属性!
那么,它是什么?
1)按照设计行为,我只是不明白(什么?)
2)来自数据绑定库的糖
3)黑客攻击
4)????
如何知道这个功能有多普拉?
答案 0 :(得分:3)
答案是1和2.数据绑定允许您使用属性来调用View上的任何setter。您可以查看data binding guide's section on attribute setters。
当您设置android:enabled
属性时,您正在使用Android数据绑定自动设置程序来调用setEnabled()
。 Android数据绑定会查看属性名称(已启用)并查找具有该名称的setter并查找setEnabled()
。 android:pressed
也是如此 - 有setPressed()
方法。是的约会!
android:onClick
是一个真实的属性,但数据绑定并不使用它。也没有setOnClick()
方法。相反,有Binding Adapter设置OnClickListener
来调用您的onLocateClick()
方法。这涉及到一些神奇的东西,依赖于数据绑定用于检查代码的注释处理器,但足以说它在编译时执行此操作而不是使用运行时反射。
所有事件侦听器都应该为它们编写与事件名称相同的绑定适配器(而不是侦听器名称)。因此,您也可以设置android:onLongClick
。您可能也对lambda syntax for events感兴趣。
我不确定你的意思是什么?便携式。&#34;数据绑定至少可以用于Gingerbread(我们声称Froyo,但实际上,谁是Froyo的目标?),但是你无法将它转移到iOS或类似的东西。所有Android数据绑定都是通过一个小的运行时库和生成的代码完成的。您不必担心Android的特定版本。