Quick fix for unread chat message & missed call indicator becoming visible after many fragment changes, probably due an issue in motion layout visibilityMode
This commit is contained in:
parent
723c693b68
commit
d317332b86
7 changed files with 165 additions and 178 deletions
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
|
||||
<solid android:color="@color/transparent_color"/>
|
||||
<size android:width="20dp" android:height="20dp"/>
|
||||
</shape>
|
|
@ -26,7 +26,7 @@
|
|||
android:id="@+id/motion_layout"
|
||||
android:layout_width="@dimen/main_activity_tabs_fragment_size"
|
||||
android:layout_height="match_parent"
|
||||
app:layoutDescription="@xml/motion_main_activity_tabs_land">
|
||||
app:layoutDescription="@xml/motion_main_activity_tabs_selector_land">
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/guidelineTop"
|
||||
|
@ -69,10 +69,9 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="5dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@drawable/unread_message_count_bg"
|
||||
android:gravity="center"
|
||||
android:text="@{String.valueOf(viewModel.missedCallsCount)}"
|
||||
android:visibility="@{viewModel.missedCallsCount == 0 ? View.GONE : View.VISIBLE}"
|
||||
android:background="@{viewModel.missedCallsCount == 0 ? @drawable/hidden_unread_message_count_bg : @drawable/unread_message_count_bg}"
|
||||
android:text="@{viewModel.missedCallsCount == 0 ? `` : String.valueOf(viewModel.missedCallsCount)}"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
|
@ -134,10 +133,9 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="5dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@drawable/unread_message_count_bg"
|
||||
android:gravity="center"
|
||||
android:text="@{String.valueOf(viewModel.unreadMessagesCount)}"
|
||||
android:visibility="@{viewModel.unreadMessagesCount == 0 ? View.GONE : View.VISIBLE}"
|
||||
android:background="@{viewModel.unreadMessagesCount == 0 ? @drawable/hidden_unread_message_count_bg : @drawable/unread_message_count_bg}"
|
||||
android:text="@{viewModel.unreadMessagesCount == 0 ? `` : String.valueOf(viewModel.unreadMessagesCount)}"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/guidelineBottom" />
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
android:id="@+id/motion_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/main_activity_tabs_fragment_size"
|
||||
app:layoutDescription="@xml/motion_main_activity_tabs">
|
||||
app:layoutDescription="@xml/motion_main_activity_tabs_selector">
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/guidelineLeft"
|
||||
|
@ -69,10 +69,9 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="25dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@drawable/unread_message_count_bg"
|
||||
android:gravity="center"
|
||||
android:text="@{String.valueOf(viewModel.missedCallsCount)}"
|
||||
android:visibility="@{viewModel.missedCallsCount == 0 ? View.GONE : View.VISIBLE}"
|
||||
android:background="@{viewModel.missedCallsCount == 0 ? @drawable/hidden_unread_message_count_bg : @drawable/unread_message_count_bg}"
|
||||
android:text="@{viewModel.missedCallsCount == 0 ? `` : String.valueOf(viewModel.missedCallsCount)}"
|
||||
app:layout_constraintRight_toLeftOf="@id/guidelineLeft"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
|
@ -134,10 +133,9 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="25dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:background="@drawable/unread_message_count_bg"
|
||||
android:gravity="center"
|
||||
android:text="@{String.valueOf(viewModel.unreadMessagesCount)}"
|
||||
android:visibility="@{viewModel.unreadMessagesCount == 0 ? View.GONE : View.VISIBLE}"
|
||||
android:background="@{viewModel.unreadMessagesCount == 0 ? @drawable/hidden_unread_message_count_bg : @drawable/unread_message_count_bg}"
|
||||
android:text="@{viewModel.unreadMessagesCount == 0 ? `` : String.valueOf(viewModel.unreadMessagesCount)}"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"/>
|
||||
|
||||
|
|
|
@ -7,43 +7,7 @@
|
|||
motion:constraintSetStart="@+id/visible"
|
||||
motion:constraintSetEnd="@+id/gone" />
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/dialer"
|
||||
motion:constraintSetEnd="@+id/chat_rooms"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/call_history"
|
||||
motion:constraintSetEnd="@+id/contacts"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/call_history"
|
||||
motion:constraintSetEnd="@+id/dialer"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/call_history"
|
||||
motion:constraintSetEnd="@+id/chat_rooms"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/contacts"
|
||||
motion:constraintSetEnd="@+id/dialer"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/contacts"
|
||||
motion:constraintSetEnd="@+id/chat_rooms"/>
|
||||
|
||||
<ConstraintSet android:id="@+id/parent">
|
||||
|
||||
<Constraint android:id="@id/history_unread_count">
|
||||
<PropertySet motion:visibilityMode="ignore" motion:applyMotionScene="false" />
|
||||
</Constraint>
|
||||
|
||||
<Constraint android:id="@id/chat_unread_count">
|
||||
<PropertySet motion:visibilityMode="ignore" motion:applyMotionScene="false" />
|
||||
</Constraint>
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/visible" motion:deriveConstraintsFrom="@id/parent">
|
||||
<ConstraintSet android:id="@+id/visible">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/tabs_fragment"
|
||||
|
@ -53,7 +17,7 @@
|
|||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/gone" motion:deriveConstraintsFrom="@id/parent">
|
||||
<ConstraintSet android:id="@+id/gone">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/tabs_fragment"
|
||||
|
@ -63,48 +27,4 @@
|
|||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/call_history" motion:deriveConstraintsFrom="@id/parent">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/selector"
|
||||
android:layout_height="@dimen/tabs_fragment_selector_size"
|
||||
motion:layout_constraintWidth_percent=".25"
|
||||
motion:layout_constraintBottom_toBottomOf="parent"
|
||||
motion:layout_constraintLeft_toLeftOf="parent" />
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/contacts" motion:deriveConstraintsFrom="@id/parent">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/selector"
|
||||
android:layout_height="@dimen/tabs_fragment_selector_size"
|
||||
motion:layout_constraintWidth_percent=".25"
|
||||
motion:layout_constraintBottom_toBottomOf="parent"
|
||||
motion:layout_constraintLeft_toLeftOf="@id/guidelineLeft" />
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/dialer" motion:deriveConstraintsFrom="@id/parent">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/selector"
|
||||
android:layout_height="@dimen/tabs_fragment_selector_size"
|
||||
motion:layout_constraintWidth_percent=".25"
|
||||
motion:layout_constraintBottom_toBottomOf="parent"
|
||||
motion:layout_constraintLeft_toLeftOf="@id/guidelineMiddle" />
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/chat_rooms" motion:deriveConstraintsFrom="@id/parent">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/selector"
|
||||
android:layout_height="@dimen/tabs_fragment_selector_size"
|
||||
motion:layout_constraintWidth_percent=".25"
|
||||
motion:layout_constraintBottom_toBottomOf="parent"
|
||||
motion:layout_constraintRight_toRightOf="parent" />
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
</MotionScene>
|
||||
|
|
|
@ -7,43 +7,7 @@
|
|||
motion:constraintSetStart="@+id/visible"
|
||||
motion:constraintSetEnd="@+id/gone" />
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/dialer"
|
||||
motion:constraintSetEnd="@+id/chat_rooms"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/call_history"
|
||||
motion:constraintSetEnd="@+id/contacts"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/call_history"
|
||||
motion:constraintSetEnd="@+id/dialer"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/call_history"
|
||||
motion:constraintSetEnd="@+id/chat_rooms"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/contacts"
|
||||
motion:constraintSetEnd="@+id/dialer"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/contacts"
|
||||
motion:constraintSetEnd="@+id/chat_rooms"/>
|
||||
|
||||
<ConstraintSet android:id="@+id/parent">
|
||||
|
||||
<Constraint android:id="@id/history_unread_count">
|
||||
<PropertySet motion:visibilityMode="ignore" motion:applyMotionScene="false" />
|
||||
</Constraint>
|
||||
|
||||
<Constraint android:id="@id/chat_unread_count">
|
||||
<PropertySet motion:visibilityMode="ignore" motion:applyMotionScene="false" />
|
||||
</Constraint>
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/visible" motion:deriveConstraintsFrom="@id/parent">
|
||||
<ConstraintSet android:id="@+id/visible">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/tabs_fragment"
|
||||
|
@ -54,7 +18,7 @@
|
|||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/gone" motion:deriveConstraintsFrom="@id/parent">
|
||||
<ConstraintSet android:id="@+id/gone">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/tabs_fragment"
|
||||
|
@ -64,48 +28,4 @@
|
|||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/call_history" motion:deriveConstraintsFrom="@id/parent">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/selector"
|
||||
android:layout_width="@dimen/tabs_fragment_selector_size"
|
||||
motion:layout_constraintHeight_percent=".25"
|
||||
motion:layout_constraintLeft_toLeftOf="parent"
|
||||
motion:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/contacts" motion:deriveConstraintsFrom="@id/parent">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/selector"
|
||||
android:layout_width="@dimen/tabs_fragment_selector_size"
|
||||
motion:layout_constraintHeight_percent=".25"
|
||||
motion:layout_constraintLeft_toLeftOf="parent"
|
||||
motion:layout_constraintTop_toTopOf="@id/guidelineTop" />
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/dialer" motion:deriveConstraintsFrom="@id/parent">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/selector"
|
||||
android:layout_width="@dimen/tabs_fragment_selector_size"
|
||||
motion:layout_constraintHeight_percent=".25"
|
||||
motion:layout_constraintLeft_toLeftOf="parent"
|
||||
motion:layout_constraintTop_toTopOf="@id/guidelineMiddle" />
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/chat_rooms" motion:deriveConstraintsFrom="@id/parent">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/selector"
|
||||
android:layout_width="@dimen/tabs_fragment_selector_size"
|
||||
motion:layout_constraintHeight_percent=".25"
|
||||
motion:layout_constraintLeft_toLeftOf="parent"
|
||||
motion:layout_constraintBottom_toBottomOf="parent" />
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
</MotionScene>
|
||||
|
|
73
app/src/main/res/xml/motion_main_activity_tabs_selector.xml
Normal file
73
app/src/main/res/xml/motion_main_activity_tabs_selector.xml
Normal file
|
@ -0,0 +1,73 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:motion="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/dialer"
|
||||
motion:constraintSetEnd="@+id/chat_rooms"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/call_history"
|
||||
motion:constraintSetEnd="@+id/contacts"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/call_history"
|
||||
motion:constraintSetEnd="@+id/dialer"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/call_history"
|
||||
motion:constraintSetEnd="@+id/chat_rooms"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/contacts"
|
||||
motion:constraintSetEnd="@+id/dialer"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/contacts"
|
||||
motion:constraintSetEnd="@+id/chat_rooms"/>
|
||||
|
||||
<ConstraintSet android:id="@+id/call_history">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/selector"
|
||||
android:layout_height="@dimen/tabs_fragment_selector_size"
|
||||
motion:layout_constraintWidth_percent=".25"
|
||||
motion:layout_constraintBottom_toBottomOf="parent"
|
||||
motion:layout_constraintLeft_toLeftOf="parent" />
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/contacts">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/selector"
|
||||
android:layout_height="@dimen/tabs_fragment_selector_size"
|
||||
motion:layout_constraintWidth_percent=".25"
|
||||
motion:layout_constraintBottom_toBottomOf="parent"
|
||||
motion:layout_constraintLeft_toLeftOf="@id/guidelineLeft" />
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/dialer">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/selector"
|
||||
android:layout_height="@dimen/tabs_fragment_selector_size"
|
||||
motion:layout_constraintWidth_percent=".25"
|
||||
motion:layout_constraintBottom_toBottomOf="parent"
|
||||
motion:layout_constraintLeft_toLeftOf="@id/guidelineMiddle" />
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/chat_rooms">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/selector"
|
||||
android:layout_height="@dimen/tabs_fragment_selector_size"
|
||||
motion:layout_constraintWidth_percent=".25"
|
||||
motion:layout_constraintBottom_toBottomOf="parent"
|
||||
motion:layout_constraintRight_toRightOf="parent" />
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
</MotionScene>
|
|
@ -0,0 +1,73 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:motion="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/dialer"
|
||||
motion:constraintSetEnd="@+id/chat_rooms"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/call_history"
|
||||
motion:constraintSetEnd="@+id/contacts"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/call_history"
|
||||
motion:constraintSetEnd="@+id/dialer"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/call_history"
|
||||
motion:constraintSetEnd="@+id/chat_rooms"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/contacts"
|
||||
motion:constraintSetEnd="@+id/dialer"/>
|
||||
|
||||
<Transition
|
||||
motion:constraintSetStart="@+id/contacts"
|
||||
motion:constraintSetEnd="@+id/chat_rooms"/>
|
||||
|
||||
<ConstraintSet android:id="@+id/call_history">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/selector"
|
||||
android:layout_width="@dimen/tabs_fragment_selector_size"
|
||||
motion:layout_constraintHeight_percent=".25"
|
||||
motion:layout_constraintLeft_toLeftOf="parent"
|
||||
motion:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/contacts">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/selector"
|
||||
android:layout_width="@dimen/tabs_fragment_selector_size"
|
||||
motion:layout_constraintHeight_percent=".25"
|
||||
motion:layout_constraintLeft_toLeftOf="parent"
|
||||
motion:layout_constraintTop_toTopOf="@id/guidelineTop" />
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/dialer">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/selector"
|
||||
android:layout_width="@dimen/tabs_fragment_selector_size"
|
||||
motion:layout_constraintHeight_percent=".25"
|
||||
motion:layout_constraintLeft_toLeftOf="parent"
|
||||
motion:layout_constraintTop_toTopOf="@id/guidelineMiddle" />
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
<ConstraintSet android:id="@+id/chat_rooms">
|
||||
|
||||
<Constraint
|
||||
android:id="@id/selector"
|
||||
android:layout_width="@dimen/tabs_fragment_selector_size"
|
||||
motion:layout_constraintHeight_percent=".25"
|
||||
motion:layout_constraintLeft_toLeftOf="parent"
|
||||
motion:layout_constraintBottom_toBottomOf="parent" />
|
||||
|
||||
</ConstraintSet>
|
||||
|
||||
</MotionScene>
|
Loading…
Reference in a new issue