尝试使用来自另一个视图的可见性的数据绑定来设置alpha

时间:2016-06-20 13:26:35

标签: android android-databinding

我有一个像这样运行的例子:

<Switch
            android:id="@+id/sw_state"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:checked="true"
            android:enabled="@{!swAuto.checked}"
            android:paddingBottom="8dp"
            android:paddingTop="8dp"
            android:text="Zustand"
            android:textColor="@{swAuto.checked ? @color/outlet_preview_card_text_disabled : @color/outlet_preview_card_text}"
            android:textSize="14sp"
            tools:textColor="@color/outlet_preview_card_text"/>

但我需要在另一个视图中设置alpha,具体取决于另一个视图的可见性,如:

<LinearLayout
        android:id="@+id/ll_global_outlet"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginEnd="10dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginStart="10dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/round_background_white"
        android:orientation="vertical"
        android:alpha="@{ivProgressBar.visibility == View.VISIBLE ? 0.90 : 1}"
        android:padding="10dp">

但是我收到了这个错误:

错误:(45,30)无法解析类型'android.widget.ImageView'上的双向绑定属性'visibility'

知道我做错了吗?

这是我应该依赖的观点:

<ImageView
        android:id="@+id/iv_progress_bar"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:layout_gravity="center"
        android:visibility="gone"
        tools:visibility="visible"
        android:background="@drawable/progress_bar_animation"/>

1 个答案:

答案 0 :(得分:6)

如果有人想知道我不能这样做。

我决定当我的VM调用startProgressBar()时,这个方法将更新我的模型,该模型有一个名为isUpdating的字段,它将是Bindable,我的VM扩展了Observable,所以:

android:alpha="@{shDevice.isUpdating ? 0.3f : 1.0f}"

会做我想做的事情