使用';绑定&x27;和';app&x27;使用Android DB设置自定义属性的名称空间?
考虑以下代码: 绑定适配器:使用';绑定&x27;和';app&x27;使用Android DB设置自定义属性的名称空间?,android,xml,android-layout,kotlin,android-databinding,Android,Xml,Android Layout,Kotlin,Android Databinding,考虑以下代码: 绑定适配器: @BindingAdapter("visibility") fun setVisibility(view: View, shouldBeVisible: Boolean) { view.visibility = if (shouldBeVisible) View.VISIBLE else View.GONE } 像这样使用绑定命名空间有什么区别: <TextView android:id="@+id/text_view"
@BindingAdapter("visibility")
fun setVisibility(view: View, shouldBeVisible: Boolean) {
view.visibility = if (shouldBeVisible) View.VISIBLE else View.GONE
}
像这样使用绑定命名空间有什么区别:
<TextView
android:id="@+id/text_view"
android:layout_width="0dp"
android:layout_height="0dp"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
bind:visibility="@{mainViewModel.showTextView}"/>
并像这样使用应用程序名称空间:
<TextView
android:id="@+id/text_view"
android:layout_width="0dp"
android:layout_height="0dp"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:visibility="@{mainViewModel.showTextView}"/>
它们都在我的代码中工作。应用程序名称空间
应用程序名称空间并非特定于库,但它用于应用程序中定义的所有属性,无论是由代码还是由导入的库定义,有效地为自定义属性(即android系统未定义的属性)创建一个全局名称空间
在这种情况下,appcompat-v7库使用镜像android:namespace的自定义属性来支持android的早期版本(例如:android:showAsAction仅在API11中添加,但app:showAsAction(作为应用程序的一部分提供)可在应用程序的所有API级别上运行)-显然,在未定义该属性的API级别上,使用android:showAsAction是行不通的
@BindingAdapter("progressColor")
public static void setProgressBarColor(ProgressBar loader, int color) {
if (loader != null) {
loader.getIndeterminateDrawable()
.setColorFilter(color, android.graphics.PorterDuff.Mode.SRC_IN);
}
}
更多细节
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
bind:progressColor="@{@android:color/holo_green_dark}"
/>
有关绑定适配器检查的详细信息如下:
它们完全相同,您只是在XML文件中给了它们不同的名称。您的
bind
命名空间可能如下所示:
xmlns:bind=”http://schemas.android.com/apk/res-auto“
您也可以将其称为
bla
或任何内容。使用bind
只会让你更清楚它的作用。可能会有帮助。没有区别,如果你想要app
或bind
或使用任何单词,这是你的选择。现在它不允许我再这样做了