Ich verwende ein TabLayout, um zwischen Fragmenten in meiner Anwendung zu navigieren. Ich möchte, dass die Tabs rechts neben der Toolbar ausgerichtet sind (neben dem Einstellungssymbol). Und es ist wie diese angezeigt werden, wenn ich zum ersten Mal die App öffnen:Android TabLayout wird nicht richtig ausgerichtet, sobald die Aktivität wieder aufgenommen wird
Allerdings, wenn ich drehen Sie den Bildschirm ins Querformat und dann zurück zum Portrait, die in der Werkzeugleiste zentriert werden Registerkarten:
ist der Code für die Toolbar, in activity_main.xml:
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:paddingTop="16dp"
android:paddingBottom="16dp"
android:layout_gravity="center_vertical"
android:src="@drawable/ic_photo_camera_white_24dp"/>
<TextView
android:id="@+id/title_text"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:paddingLeft="56dp"
android:paddingStart="56dp"
android:textColor="@color/white"
android:textSize="@dimen/abc_text_size_title_material_toolbar"/>
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="right"
app:tabMode="fixed"
app:tabMaxWidth="56dp"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
app:tabIndicatorColor="@android:color/white"/>
</RelativeLayout>
</android.support.v7.widget.Toolbar>
Und die onCreate Methode der MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
setupTabIcons();
TextView tv = (TextView) findViewById(R.id.title_text);
tv.setText(viewPager.getAdapter().getPageTitle(viewPager.getCurrentItem()));
tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {
@Override
public void onTabSelected(TabLayout.Tab tab) {
super.onTabSelected(tab);
TextView tv = (TextView) findViewById(R.id.title_text);
tv.setText(tabText[tab.getPosition()]);
}
});
}
setupViewPager Methode:
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new HotFragment(), "Hot");
adapter.addFragment(new YourPostsFragment(), "Your Posts");
adapter.addFragment(new ExploreMapFragment(), "Explore");
viewPager.setAdapter(adapter);
}
setupTabIcons Methode:
private void setupTabIcons() {
TabLayout.Tab hot = tabLayout.getTabAt(0);
TabLayout.Tab your_posts = tabLayout.getTabAt(1);
TabLayout.Tab explore = tabLayout.getTabAt(2);
hot.setIcon(tabIcons[0]);
hot.setText(null);
your_posts.setIcon(tabIcons[1]);
your_posts.setText(null);
explore.setIcon(tabIcons[2]);
explore.setText(null);
}
Ich habe viele verschiedene XML-Eigenschaften ausprobiert, aber ich bin geneigt zu glauben, dass dies Java-bedingt ist, aufgrund des Problems, das auftritt, wenn die Aktivität neu gestartet wird. Aber ich kann nicht finden, warum das passieren würde. Jede Hilfe wird geschätzt.
Hallo wünschen, ich bin nur neugierig, in 'android.support .design.widget.TabLayout', du benutzt 'android: gravity =" right "', ist das nicht so, dass es android heißt: layout_gravity = "right" '? – Sam