Tablayout nur mit Symbolen
Ich bin mit design-Unterstützung, um Register zu erstellen. Ich bin auch mit ViewPager
für swipable tabs.
Nun, ich weiß nicht, wie zu verwenden nur Symbole anstelle von Texten in tabs. Ich habe versucht heraus zu finden aber kein Erfolg.
Mein code:
Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager) findViewById(R.id.pager);
setupViewPager(viewPager);
setupTablayout();
}
private void setupTablayout() {
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setupWithViewPager(viewPager);
}
class MyPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public MyPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFrag(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
mFragmentTitleList.get(position)
}
}
private void setupViewPager(ViewPager viewPager) {
MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager());
adapter.addFrag(new frag(), "CAT");
adapter.addFrag(new frag(), "DOG");
adapter.addFrag(new frag(), "BIRD");
viewPager.setAdapter(adapter);
}
InformationsquelleAutor der Frage androGuy | 2015-06-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ein Ansatz ist die Einstellung der Symbole nach TabLayout.setupWithViewPager() Methode.
InformationsquelleAutor der Antwort user802421
Tutorial zeigen in dem folgenden link sollte abdecken, was Sie wollen. https://github.com/codepath/android_guides/wiki/Google-Play-Style-Tabs-using-TabLayout#add-icons-to-tablayout
Kopierte ich den entsprechenden Abschnitt unten.
Fügen Sie Symbole, um TabLayout
Derzeit, die TabLayout Klasse nicht bieten eine saubere Abstraktion-Modell, der es ermöglicht, icons in der tab. Es gibt viele workarounds gepostet, einer davon ist die Rückgabe einer SpannableString, mit Ihrem Symbol in einer ImageSpan, von Ihrem PagerAdapter ist getPageTitle(position) - Methode, wie dargestellt in der code-snippet unter:
Standardmäßig die Registerkarte erstellt durch TabLayout legt die textAllCaps Eigenschaft, um wahr zu sein, die verhindert, dass ImageSpans gerendert wird. Sie können dieses Verhalten überschreiben, indem Sie ändern die tabTextAppearance Eigenschaft.
InformationsquelleAutor der Antwort user4989692
In der neuen version von
TabLayout
google HinzugefügtTabItem
die leicht hinzufügen können-Symbol durch Ihre XML mit folgenden code:Mehr sehen hier.
InformationsquelleAutor der Antwort Amir
versuchen, diese
InformationsquelleAutor der Antwort Rahul Vishwakarma
Der einfachste Weg, den ich gefunden habe, die icons benutzen, ist die Verwendung Tablayout.Tab.setIcon(drawable). Dies macht es auch einfach, um markieren Sie das gewählte Symbol. Wenn Sie dies tun möchten, gehen Sie folgendermaßen vor.
Schritt 1.
Fügen Sie Ihre Bilder, um die res.mipmap-Ordner. (mipmap-mdpi, hdpi etc.) Die Beurteilung durch die anderen Antworten hier ist es auch fein zu setzen, dann in der res.drawable Ordner.
Schritt 2.
Rufen Sie setIcon auf alle Ihre tabs nach dem einrichten Ihres TabLayout und ViewPager. Ich Tat dies in meinem AdapterTabs zu halten, die Aktivität ordentlich.
So in Ihrer Aktivität dazu:
und in Ihrem AdapterTabs, die erweitert werden soll FragmentPagerAdapter, setzen Sie Ihre setTabIcons () - Methode.
Stellen Sie sicher, speichern Sie einen Verweis auf die beiden Listen 'icons' und 'iconsHilighted'. Du wirst Sie später brauchen. Auch speichern eine Referenz auf das TabLayout und den ViewPager die Sie bestanden in der Aktivität.
Schritt 3.
Stellen Sie sicher, AdapterTabs.getPageTitle() null zurück.
An diesem Punkt, wenn Sie es ausführen, sollten Sie sehen, dass das erste Symbol markiert ist.
Schritt 4.
Implementieren ViewPager.OnPageChangeListener in AdapterTabs und hinzufügen, dass die listener dem viewPager
Schritt 5.
Aktualisieren Sie die Symbole in den Registerkarten in der onPageSelected Rückruf in Ihre AdapterTabs.
Nun sehen Sie die hilighted-Symbol aktualisiert werden, wenn Sie Registerkarten ändern.
InformationsquelleAutor der Antwort ninjachippie
Keiner dieser Methoden sind elegant, wenn mit TabLayout als der ViewPager "Dekor" - Szenario. TabLayout Dokumentation Hier ist eine einfache Erweiterung des TabLayout und PagerAdapter, bietet eine einfache drop-in-Ersatz für das TabLayout, dass es möglich sein sollte, entweder im Szenario ohne manuelles hinzufügen von Symbolen außerhalb der TabLayout Klasse und nach der Verwendung von PagerAdapter, um die Registerkarte Informationen.
Also alles, was muss getan werden, zu erweitern, um
TabLayoutViewPagerAdapter
stattPageAdapter
und implementierengetPageIcon(Context,int)
anstelle von oder zusätzlich zum Titel. Die drop-inTabLayoutExt
in Ihrer XML-Datei statt der normalenTabLayout
. Dies könnte erweitert werden, für die weitere Modifizierung des tab, entweder mit einer benutzerdefinierten Ansicht anstelle oder etwas anderes.InformationsquelleAutor der Antwort JDL
In
TabLayout
Einstellung Symbol ist einfach:getPageTitle(position)
zurückkehren solltenull
(wenn Sie nicht wollen, Titel zu zeigen).Weiter :
InformationsquelleAutor der Antwort Bhuwan
am einfachsten ist es, Sie auf neue Tabelle erstellen, indem Sie Einstellung Ikone auf tablayout. code unten zwei Reiter mit Symbol nur. verwenden Sie diesen code auf onCreate () - Methode
InformationsquelleAutor der Antwort lotus weaver
Versuchen, diese, dieses wird auf jeden Fall funktionieren .
InformationsquelleAutor der Antwort Kunwar Shekhar Singh
Dies ist möglicherweise nicht die beste Antwort für alle Fälle, aber was ich gefunden habe mein problem nicht lösen aber.
Nach einem Blick auf Androiden Umsetzung von
tabLayout.setupWithViewPager(ViewPager pager)
ich kam mit einer Lösung, die mit nur der Zuhörer.Die layout-Struktur:
Code für die beiden Zuhörer:
Haben Sie einen Blick auf die
tabLayout.setScrollPosition
Aufruf innerhalbOnPageChangeListener.onPageScrolled
für die mehr oder weniger gut verschieben der Anzeige beim scrollen.Funktioniert dies nicht, wenn die TabLayout Breite ist nicht festgelegt match_parent (oder muss scrollbaren).
Grüße
InformationsquelleAutor der Antwort michiruf