App Name-Space
Пространство имен приложения не является специфическим для библиотеки, но оно используется для всех атрибутов, определенных в вашем приложении, будь то ваш код или импортируемые вами библиотеки, эффективно создавая единое глобальное пространство имен для пользовательских атрибутов - т.е. атрибуты не определены по системе андроид.
В этом случае библиотека appcompat-v7 использует настраиваемые атрибуты, отражающие атрибуты android: namespace для поддержки предыдущих версий android (например: android: showAsAction был добавлен только в API11, но app: showAsAction (предоставляется как часть ваше приложение) работает на всех уровнях API вашего приложения) - очевидно, с использованием android: showAsAction не будет работать на уровнях API, где этот атрибут не определен.
- Bind
Bind используется для пользовательского установщика в привязке данных Android. Подробности смотрите ниже
Вам просто нужно аннотировать статический метод с помощью аннотации BindingAdapter. Эта аннотация принимает строку в качестве параметра. Строка - это пользовательский атрибут, с которым будет связан этот статический метод. Избегайте добавления пространства имен в параметр аннотации, так как это сделает привязку ненадежной. Первым параметром метода является объект View для
примените функцию к, а вторым параметром будет значение, полученное из XML макета.
@BindingAdapter("progressColor")
public static void setProgressBarColor(ProgressBar loader, int color) {
if (loader != null) {
loader.getIndeterminateDrawable()
.setColorFilter(color, android.graphics.PorterDuff.Mode.SRC_IN);
}
}
Fore более подробно
<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}"
/>
Подробности о проверке связующего адаптера приведены ниже:
https://developer.android.com/topic/libraries/data-binding/binding-adapters