Cześć,
chciałbym zrobić menu poziome przewijane, coś na wzór menu w tableLayout (ze screena poniżej). TableLayout byłby dla mnie w porządku, gdybym mógł po naciśnięciu nie przeładowywać całych fragmentów tylko zrobić swoją logikę na danym fragmencie (przefiltrować elementy w liście).
Z racji tego, że nie udało mi się zrobić tabLayoutu bez przeładowywania fragmentów, postanowiłem zrobić swoje menu używając do tego radio buttonów. Problem polega na tym, że brakuje mi płynnego przechodzeniatła przycisku (radio buttona) w inny kolor, tak jak to jest w przypadku tabLayoutu. Zrobiłem tak, że po naciśnięciu przycisk zmienia kolor na inny, jednak kolor jest zmieniony wyłącznie jeśli przycisk jest wciśnięty i nie przechodzi w drugi kolor płynnie.
Jeśli chodzi o efekt płynnej zmiany koloru tła, to chciałbym, żeby to wyglądało tak jak na filmie poniżej (~0:05):
Kod menu:
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<RadioGroup
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatRadioButton
android:id="@+id/rb_movie_menu_all"
android:layout_width="110dp"
android:layout_height="40dp"
android:text="@string/anime_menu_all"
android:gravity="center"
android:button="@android:color/transparent"
android:background="@drawable/h_menu_button"
android:textAllCaps="true"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:checked="true"
/>
<androidx.appcompat.widget.AppCompatRadioButton
android:id="@+id/rb_movie_menu_watching"
android:layout_width="110dp"
android:layout_height="40dp"
android:text="@string/anime_menu_watching"
android:gravity="center"
android:button="@android:color/transparent"
android:background="@drawable/h_menu_button"
android:textAllCaps="true"
android:textColor="#FFFFFF"
android:textStyle="bold"
/>
<androidx.appcompat.widget.AppCompatRadioButton
android:id="@+id/rb_movie_menu_pending"
android:layout_width="110dp"
android:layout_height="40dp"
android:text="@string/anime_menu_pending"
android:gravity="center"
android:button="@android:color/transparent"
android:background="@drawable/h_menu_button"
android:textAllCaps="true"
android:textColor="#FFFFFF"
android:textStyle="bold"
/>
<androidx.appcompat.widget.AppCompatRadioButton
android:id="@+id/rb_movie_menu_planned"
android:layout_width="110dp"
android:layout_height="40dp"
android:text="@string/anime_menu_planned"
android:gravity="center"
android:button="@android:color/transparent"
android:background="@drawable/h_menu_button"
android:textAllCaps="true"
android:textColor="#FFFFFF"
android:textStyle="bold"
/>
<androidx.appcompat.widget.AppCompatRadioButton
android:id="@+id/rb_movie_menu_completed"
android:layout_width="110dp"
android:layout_height="40dp"
android:text="@string/anime_menu_watching"
android:gravity="center"
android:button="@android:color/transparent"
android:background="@drawable/h_menu_button"
android:textAllCaps="true"
android:textColor="#FFFFFF"
android:textStyle="bold"
/>
</RadioGroup>
</HorizontalScrollView>
Przycisk:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/h_menu_button_checked"/>
<item android:state_pressed="true" android:drawable="@drawable/h_menu_button_pressed"/>
<item android:drawable="@drawable/h_menu_button_normal"/>
</selector>
h_menu_button_checked:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/colorAccent"/>
</shape>
</item>
<item android:bottom="3dp">
<shape android:shape="rectangle">
<solid android:color="@color/colorPrimary"/>
</shape>
</item>
</layer-list>
h_menu_button_pressed:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/colorPrimaryDark"/>
</shape>
h_menu_button_normal:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/colorPrimary"/>
</shape>
Bardzo proszę o wskazówki. Dodam, że aplikacja jest napisana w kotlinie.