Commit d1068018 authored by topjohnwu's avatar topjohnwu

Nest CardView with alpha in another FrameLayout

RecyclerView animator will mess with alpha when animating
Check this StackOverflow question for more info:
https://stackoverflow.com/questions/40942116/setalpha-on-onbindview-in-recyclerview-doesnt-work-on-first-display
parent f5aa6a3c
...@@ -19,132 +19,136 @@ ...@@ -19,132 +19,136 @@
</data> </data>
<com.google.android.material.card.MaterialCardView <FrameLayout
style="@style/WidgetFoundation.Card.Variant"
isEnabled="@{!item.removed}"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content">
android:alpha="@{item.enabled ? 1f : .5f}"
android:onClick="@{() -> item.toggle()}" <com.google.android.material.card.MaterialCardView
tools:layout_gravity="center" style="@style/WidgetFoundation.Card.Variant"
tools:layout_marginBottom="@dimen/l1" isEnabled="@{!item.removed}"
tools:layout_marginEnd="@dimen/l1">
<ImageView
android:id="@+id/module_state_icon"
gone="@{!item.removed &amp;&amp; !item.updated}"
srcCompat="@{item.removed ? R.drawable.ic_delete_md2 : (item.updated ? R.drawable.ic_update_md2 : 0)}"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:adjustViewBounds="true"
android:alpha=".05"
android:background="@null"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:tint="?colorOnSurface"
tools:srcCompat="@drawable/ic_update_md2" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:animateLayoutChanges="true"> android:alpha="@{item.enabled ? 1f : .5f}"
android:onClick="@{() -> item.toggle()}"
tools:layout_gravity="center"
tools:layout_margin="@dimen/l1">
<TextView <ImageView
android:id="@+id/module_title" android:id="@+id/module_state_icon"
strikeThrough="@{item.removed}" gone="@{!item.removed &amp;&amp; !item.updated}"
android:layout_width="0dp" srcCompat="@{item.removed ? R.drawable.ic_delete_md2 : (item.updated ? R.drawable.ic_update_md2 : 0)}"
android:layout_height="wrap_content" android:layout_width="wrap_content"
android:layout_marginStart="@dimen/l1" android:layout_height="match_parent"
android:layout_marginTop="@dimen/l1" android:layout_gravity="center"
android:layout_marginEnd="@dimen/l_50" android:adjustViewBounds="true"
android:text="@{item.item.name}" android:alpha=".05"
android:textAppearance="@style/AppearanceFoundation.Body" android:background="@null"
android:textStyle="bold" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/module_indicator" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:text="@tools:sample/lorem" /> app:tint="?colorOnSurface"
tools:srcCompat="@drawable/ic_update_md2" />
<TextView <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/module_version_author"
strikeThrough="@{item.removed}"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@{@string/module_version_author(item.item.version, item.item.author)}"
android:textAppearance="@style/AppearanceFoundation.Caption.Variant"
app:layout_constraintEnd_toEndOf="@+id/module_title"
app:layout_constraintStart_toStartOf="@+id/module_title"
app:layout_constraintTop_toBottomOf="@+id/module_title"
tools:text="v1 by topjohnwu" />
<com.google.android.material.switchmaterial.SwitchMaterial
android:id="@+id/module_indicator"
android:checked="@={item.enabled}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/l_50"
app:layout_constraintBottom_toBottomOf="@+id/module_version_author"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1"
app:layout_constraintStart_toEndOf="@+id/module_info"
app:layout_constraintTop_toTopOf="@+id/module_title" />
<TextView
android:id="@+id/module_description"
gone="@{item.item.description.empty}"
strikeThrough="@{item.removed}"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/l1"
android:layout_marginTop="@dimen/l1"
android:layout_marginEnd="@dimen/l1"
android:text="@{item.item.description}"
android:textAppearance="@style/AppearanceFoundation.Caption.Variant"
app:layout_constraintTop_toBottomOf="@+id/module_version_author"
tools:lines="4"
tools:text="@tools:sample/lorem/random" />
<View
android:id="@+id/module_divider"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="@dimen/l1"
android:background="?colorSurfaceSurfaceVariant"
app:layout_constraintTop_toBottomOf="@+id/module_description" />
<ImageView
android:id="@+id/module_info"
style="@style/WidgetFoundation.Icon"
gone="@{item.repo == null}"
android:layout_width="wrap_content"
android:alpha=".5"
android:onClick="@{() -> viewModel.infoPressed(item)}"
android:paddingEnd="@dimen/l_50"
app:layout_constraintBottom_toBottomOf="@+id/module_remove"
app:layout_constraintEnd_toStartOf="@+id/module_remove"
app:layout_constraintTop_toTopOf="@+id/module_remove"
app:srcCompat="@drawable/ic_info" />
<com.google.android.material.button.MaterialButton
android:id="@+id/module_remove"
style="@style/WidgetFoundation.Button.Text"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:onClick="@{(v) -> item.delete(viewModel)}" android:animateLayoutChanges="true">
android:text="@{item.removed ? @string/module_state_restore : @string/module_state_remove}"
android:textAllCaps="false" <TextView
app:icon="@{item.removed ? R.drawable.ic_restart : R.drawable.ic_delete_md2}" android:id="@+id/module_title"
app:iconGravity="textEnd" strikeThrough="@{item.removed}"
app:layout_constraintEnd_toEndOf="parent" android:layout_width="0dp"
app:layout_constraintTop_toBottomOf="@+id/module_divider" android:layout_height="wrap_content"
tools:icon="@drawable/ic_delete_md2" android:layout_marginStart="@dimen/l1"
tools:text="Remove" /> android:layout_marginTop="@dimen/l1"
android:layout_marginEnd="@dimen/l_50"
</androidx.constraintlayout.widget.ConstraintLayout> android:text="@{item.item.name}"
android:textAppearance="@style/AppearanceFoundation.Body"
</com.google.android.material.card.MaterialCardView> android:textStyle="bold"
app:layout_constraintEnd_toStartOf="@+id/module_indicator"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="@tools:sample/lorem" />
<TextView
android:id="@+id/module_version_author"
strikeThrough="@{item.removed}"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="@{@string/module_version_author(item.item.version, item.item.author)}"
android:textAppearance="@style/AppearanceFoundation.Caption.Variant"
app:layout_constraintEnd_toEndOf="@+id/module_title"
app:layout_constraintStart_toStartOf="@+id/module_title"
app:layout_constraintTop_toBottomOf="@+id/module_title"
tools:text="v1 by topjohnwu" />
<com.google.android.material.switchmaterial.SwitchMaterial
android:id="@+id/module_indicator"
android:checked="@={item.enabled}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/l_50"
app:layout_constraintBottom_toBottomOf="@+id/module_version_author"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1"
app:layout_constraintStart_toEndOf="@+id/module_info"
app:layout_constraintTop_toTopOf="@+id/module_title" />
<TextView
android:id="@+id/module_description"
gone="@{item.item.description.empty}"
strikeThrough="@{item.removed}"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/l1"
android:layout_marginTop="@dimen/l1"
android:layout_marginEnd="@dimen/l1"
android:text="@{item.item.description}"
android:textAppearance="@style/AppearanceFoundation.Caption.Variant"
app:layout_constraintTop_toBottomOf="@+id/module_version_author"
tools:lines="4"
tools:text="@tools:sample/lorem/random" />
<View
android:id="@+id/module_divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="@dimen/l1"
android:background="?colorSurfaceSurfaceVariant"
app:layout_constraintTop_toBottomOf="@+id/module_description" />
<ImageView
android:id="@+id/module_info"
style="@style/WidgetFoundation.Icon"
gone="@{item.repo == null}"
android:layout_width="wrap_content"
android:alpha=".5"
android:onClick="@{() -> viewModel.infoPressed(item)}"
android:paddingEnd="@dimen/l_50"
app:layout_constraintBottom_toBottomOf="@+id/module_remove"
app:layout_constraintEnd_toStartOf="@+id/module_remove"
app:layout_constraintTop_toTopOf="@+id/module_remove"
app:srcCompat="@drawable/ic_info" />
<com.google.android.material.button.MaterialButton
android:id="@+id/module_remove"
style="@style/WidgetFoundation.Button.Text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="@{() -> item.delete(viewModel)}"
android:text="@{item.removed ? @string/module_state_restore : @string/module_state_remove}"
android:textAllCaps="false"
app:icon="@{item.removed ? @drawable/ic_restart : @drawable/ic_delete_md2}"
app:iconGravity="textEnd"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/module_divider"
tools:icon="@drawable/ic_delete_md2"
tools:text="Remove" />
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
</FrameLayout>
</layout> </layout>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment