Ich verwende den viewPager mit android.support.design.widget.TabLayout. Mein xml istZurück-Taste und ViewPager
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.ViewPager
android:id="@+id/home_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/custom_tab_layout_height"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<!-- tabs -->
<android.support.design.widget.TabLayout
android:id="@+id/home_tabs"
android:layout_width="match_parent"
android:layout_height="@dimen/custom_tab_layout_height"
android:layout_alignParentBottom="true"
app:tabGravity="fill"
android:background="@color/light_blue_low_opacity"
app:tabIndicatorHeight="0dp"
app:tabMode="fixed"
app:tabPaddingEnd="0dp"
app:tabPaddingStart="0dp"
app:tabSelectedTextColor="@color/light_green"
app:tabTextAppearance="@style/HomeTabsTextAppearance"
app:tabTextColor="@color/white" />
</RelativeLayout>
I viewPager wie unten
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
mViewPager = (ViewPager) findViewById(R.id.home_container);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager.setPagingEnabled(false);
mViewPager.setOffscreenPageLimit(5);
tabLayout = (TabLayout) findViewById(R.id.home_tabs);
tabLayout.setTabTextColors(ContextCompat.getColorStateList(this, R.color.color_home_tabs));
tabLayout.setupWithViewPager(mViewPager);
Mein tabListener
tabLayout.setOnTabSelectedListener(
new TabLayout.ViewPagerOnTabSelectedListener(mViewPager) {
@Override
public void onTabSelected(TabLayout.Tab tab) {
super.onTabSelected(tab);
int position = tab.getPosition();
mViewPager.setCurrentItem(position);
String tab0TextUnSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.white) + "'> " + getResources().getString(R.string.home_tab1) + " </font>";
String tab1TextUnSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.white) + "'> " + getResources().getString(R.string.home_tab2) + "</font>";
String tab2TextUnSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.white) + "'> " + getResources().getString(R.string.home_tab3) + "</font>";
String tab3TextUnSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.white) + "'> " + getResources().getString(R.string.home_tab4) + "</font>";
String tab4TextUnSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.white) + "'> " + getResources().getString(R.string.home_tab5) + "</font>";
String tab0TextSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.light_green) + "'> " + getResources().getString(R.string.home_tab1) + " </font>";
String tab1TextSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.light_green) + "'> " + getResources().getString(R.string.home_tab2) + "</font>";
String tab2TextSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.light_green) + "'> " + getResources().getString(R.string.home_tab3) + "</font>";
String tab3TextSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.light_green) + "'> " + getResources().getString(R.string.home_tab4) + "</font>";
String tab4TextSelected = "<font color='" + ContextCompat.getColor(getApplicationContext(), R.color.light_green) + "'> " + getResources().getString(R.string.home_tab5) + "</font>";
TabLayout.Tab tab0 = tabLayout.getTabAt(0);
TabLayout.Tab tab1 = tabLayout.getTabAt(1);
TabLayout.Tab tab2 = tabLayout.getTabAt(2);
TabLayout.Tab tab3 = tabLayout.getTabAt(3);
TabLayout.Tab tab4 = tabLayout.getTabAt(4);
if (tab0 != null) {
tab0.setIcon(R.drawable.ic_home_profile_unselected);
tab0.setText(Html.fromHtml(tab0TextUnSelected));
}
if (tab1 != null) {
tab1.setIcon(R.drawable.ic_home_rewards_unselected);
tab1.setText(Html.fromHtml(tab1TextUnSelected));
}
if (tab2 != null) {
tab2.setIcon(R.drawable.ic_home_gallups_unselected);
tab2.setText(Html.fromHtml(tab2TextUnSelected));
}
if (tab3 != null) {
tab3.setIcon(R.drawable.ic_home_statistics_unselected);
tab3.setText(Html.fromHtml(tab3TextUnSelected));
}
if (tab4 != null) {
tab4.setIcon(R.drawable.ic_home_settings_unselected);
tab4.setText(Html.fromHtml(tab4TextUnSelected));
}
if (position == 0) {
if (tab0 != null) {
tab0.setIcon(R.drawable.ic_home_profile_selected);
tab0.setText(Html.fromHtml(tab0TextSelected));
}
} else if (position == 1) {
if (tab1 != null) {
tab1.setIcon(R.drawable.ic_home_rewards_selected);
tab1.setText(Html.fromHtml(tab1TextSelected));
}
} else if (position == 2) {
if (tab2 != null) {
tab2.setIcon(R.drawable.ic_home_gallups_selected);
tab2.setText(Html.fromHtml(tab2TextSelected));
}
} else if (position == 3) {
if (tab3 != null) {
tab3.setIcon(R.drawable.ic_home_statistics_selected);
tab3.setText(Html.fromHtml(tab3TextSelected));
}
} else if (position == 4) {
if (tab4 != null) {
tab4.setIcon(R.drawable.ic_home_settings_selected);
tab4.setText(Html.fromHtml(tab4TextSelected));
}
}
}
});
ist eingestellt habe ich überschreiben die onBackPressed
Methode wie folgt
if (mViewPager.getCurrentItem() != 0) {
mViewPager.setCurrentItem(mViewPager.getCurrentItem() - 1, true);
}
Zusammengefasst Ich habe Tabs mit i Nachteile und Texte. Wenn eine Registerkarte ausgewählt ist, wird das Symbol geändert und der Text wird grün dargestellt. Wenn eine Registerkarte nicht ausgewählt ist, wird das Symbol geändert und der Text wird weiß dargestellt. Dies funktionierte gut, wenn der Benutzer auf Registerkarten klickt. Wenn der Benutzer auf die Zurück-Schaltfläche klickt, werden das Symbol und die Textfarbe korrekt geändert, aber für die vorherige Registerkarte bleibt der Text grün.
der zweite Parameter ist für die reibungslose Scroll .. Wie auch immer ich getestet und OMG es funktioniert – user4292106
Ich kann nicht verstehen, warum ... – user4292106
tut es hat wirklich für dich funktioniert? –