To jest mój kod w głównym działaniu
public class FilterActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_filter);
// Get the ViewPager and set it's PagerAdapter so that it can display items
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
PageAdapter pageAdapter = new PageAdapter(getSupportFragmentManager(), FilterActivity.this);
viewPager.setAdapter(pageAdapter);
// Give the TabLayout the ViewPager
final TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs);
tabLayout.setupWithViewPager(viewPager);
}
}
A to jest mój kod w XML
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/app_bar"
layout="@layout/app_bar">
</include>
<android.support.design.widget.TabLayout
android:id="@+id/sliding_tabs"
android:layout_width="fill_parent"
style="@style/MyCustomTabLayout"
android:layout_height="48dp"/>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="@android:color/white" />
</LinearLayout>
Chcę zmienić kolor tła jednej karty, gdy jest ona zaznaczona
android
android-tabs
android-tablayout
Joel Lara
źródło
źródło
tabLayout.setBackgroundColor(colorInt)
. Jeśli potrzebujesz go dla każdej karty, możesz wyodrębnić dzieci ze swojego TabLayoutMożesz spróbować tego:
W pliku XML w tle:
źródło
Dodaj atrybut w xml:
I utwórz w folderze do rysowania, tab_color_selector.xml
źródło
Czy próbowałeś sprawdzić API ?
Będziesz musiał utworzyć detektor dla
OnTabSelectedListener
zdarzenia, a następnie, gdy użytkownik wybierze jakąkolwiek kartę, powinieneś sprawdzić, czy jest ona właściwa, a następnie zmienić kolor tła za pomocątabLayout.setBackgroundColor(int color)
, lub jeśli nie jest to poprawna karta, upewnij się, że zmieniłeś z powrotem na normalny kolor ponownie tą samą metodą.źródło
android:background=FF0000
Możesz to mieć w pliku xml.
źródło
Jak znalazłem najlepszą i odpowiednią opcję dla mnie i będzie działać również z animacją.
Możesz użyć
indicator
go jako tła.Możesz ustawić
app:tabIndicatorGravity="stretch"
atrybut, który będzie używany jako tło.Przykład:
Mam nadzieję, że to ci pomoże.
źródło
app:tabIndicatorColor
@MindRoasterMirMożesz zmienić kolor tła lub tętnienia każdej karty w następujący sposób:
źródło
Po jakimś zamieszaniu w ten sposób uzyskałem pożądany wygląd (przynajmniej w emulatorze) i utrzymuje efekt tętnienia.
Oraz
@drawable/tab_selector
:FYI: To właśnie pokazał emulator, zanim dodałem
color
argument do@drawable/tab_selector
:źródło
Za pomocą tego atrybutu możesz zmienić kolor tła karty
źródło
Jednym z najprostszych rozwiązań jest zmiana colorPrimary z pliku colors.xml.
źródło