Este é o meu código na atividade principal
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);
}
}
E este é o meu código no 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>
Quero mudar a cor de fundo de uma guia quando estiver selecionada
android
android-tabs
android-tablayout
Joel Lara
fonte
fonte
tabLayout.setBackgroundColor(colorInt)
. Se precisar para cada guia, você pode extrair os filhos de seu TabLayoutVocê pode tentar isto:
Em seu arquivo xml de fundo:
fonte
Adicionar atributo em xml:
E crie na pasta drawable, tab_color_selector.xml
fonte
Você já tentou verificar a API ?
Você precisará criar um ouvinte para o
OnTabSelectedListener
evento, então, quando um usuário selecionar qualquer guia, você deve verificar se é a correta e, em seguida, alterar a cor de fundo usandotabLayout.setBackgroundColor(int color)
ou, se não for a guia correta, certifique-se de voltar para o cor normal novamente com o mesmo método.fonte
android:background=FF0000
Você pode tê-lo no xml.
fonte
Como achei a opção mais adequada para mim e funcionará com animação também.
Você pode usar
indicator
lo como pano de fundo.Você pode definir
app:tabIndicatorGravity="stretch"
atributo para usar como plano de fundo.Exemplo:
Espero que ajude você.
fonte
app:tabIndicatorColor
@MindRoasterMirVocê pode alterar o plano de fundo ou a cor ondulada de cada guia assim:
fonte
Depois de algumas bagunças, consegui o visual desejado (pelo menos no emulador) e manteve o efeito cascata.
E o
@drawable/tab_selector
:Para sua informação: Isso é o que o emulador mostrou antes de eu adicionar o
color
argumento para@drawable/tab_selector
:fonte
Você pode alterar a cor de fundo da guia por este atributo
fonte
Uma das soluções mais simples é alterar colorPrimary do arquivo colors.xml.
fonte