【问题标题】:Unable to pass color variable in included layout using Data Binding无法使用数据绑定在包含的布局中传递颜色变量
【发布时间】:2018-07-11 14:40:30
【问题描述】:

我想将一个颜色变量传递给包含的布局,目前,我正在尝试从我的 colors.xml 传递颜色,并且我添加了变量类型 'android.graphics.Color' 但它不起作用,应该是什么类型准确的颜色变量?

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <data>

        <import type="android.view.View" />

        <variable
            name="isLoading"
            type="Boolean" />
        <variable
            name="loaderColor"
            type="android.graphics.Color" />
    </data>

    <com.wang.avi.AVLoadingIndicatorView
        android:layout_width="@dimen/btn_loading_indicator"
        android:layout_height="@dimen/btn_loading_indicator"
        android:layout_gravity="center"
        android:visibility="@{isLoading?View.VISIBLE:View.GONE}"
        app:indicatorColor="@{loaderColor}"
        app:indicatorName="LineSpinFadeLoaderIndicator" />
</layout>

主布局

<include
                    layout="@layout/layout_btn_loading_indicator"
                    app:loaderColor="@{@color/theme_color}"
                    app:isLoading="@{viewModel.isLoading}" />

【问题讨论】:

  • @color/fayvo_color 是一个整数。让我知道它是否能解决您的问题
  • 谢谢,帮了大忙。
  • 是的,它可能会以明确的方式帮助其他人。

标签: android android-layout data-binding


【解决方案1】:

@color/color_name 是资源 ID,因此类型为 int。你的变量应该像

<variable name="loaderColor" type="int" />

【讨论】:

  • 是的,但是为什么它适用于 @string/title 的变量类型 String 。它不应该也是 int 吗?
  • 确实如此。颜色始终为 4 字节。字符串,在 Android 上可以用 res-id 或字符串对象本身来表示
猜你喜欢
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 2020-02-01
  • 2016-03-30
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
  • 2019-03-24
相关资源
最近更新 更多