2016-03-29 4 views
0

Ich versuche, ViewPager mit TabLayout zu erstellen und Symbole anstelle von Text in TabLayout zu verwenden. Ich habe versucht, Tutorials, Antworten auf Stackoverflow, aber nichts half mein Problem zu lösen.Wie ersetzt man die Zeichenkette durch das Icon in TabLayout?

Mein TabLayout

<android.support.design.widget.TabLayout 
       android:id="@+id/tab_layout" 
       style="@style/MyCustomTabLayout" 
       android:layout_width="match_parent" 
       android:layout_height="?android:attr/actionBarSize" 
       android:layout_alignParentBottom="true" 
       android:background="@color/colorPrimary" 
       app:tabGravity="fill" 
       app:tabMode="fixed" 
       local:theme="@style/ViewPagerTheme" 
       /> 

MyCustomTabLayout Stil

<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout"> 
    <item name="tabTextAppearance">@style/MyCustomTextAppearance</item> 

</style> 

<style name="MyCustomTextAppearance" parent="TextAppearance.Design.Tab"> 
    <item name="textAllCaps">false</item> 
</style> 

Mein PagerAdapter getPageTitle()

@Override 
public CharSequence getPageTitle(int position) { 
    Drawable image = ContextCompat.getDrawable(App.getContext(), PageInfo.getByPosition(position).getIConResId()); 
    image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight()); 
    SpannableString sb = new SpannableString(" "); 
    ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM); 
    sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    return sb; 
} 

Ich verwende einen Stil mit Satz

<item name="textAllCaps">false</item>

aber wenn ich SpannableString sb = new SpannableString(" "); zu so etwas wie diese

mein TabLayout spiegelt mit Kappen A

SpannableString sb = new SpannableString("a");

und wenn verlassen Leerzeichen haben meine TabLayout ändern kein Wert und ist leer, ich denke, das Problem sollte in diesem Schritt sein, aber ich weiß nicht, wie ich es beheben soll.

+0

Wenn Sie Bilder versuchen, anstelle von Text zu verwenden, warum Sie den Text der Registerkarten einstellen? –

Antwort

3

Try this:

for (int i = 0; i < tabLayout.getTabCount(); i++) { 
    tabLayout.getTabAt(i).setIcon(R.drawable.your_icon); 
} 
+1

Danke! Dies funktionierte perfekt, als ich die Funktion "public CharSequence getPageTitle (int position)" entfernte – JonasSeputis

0

Sie Symbol anstelle Layout Zeichenfolge in Tab festlegen können, für diese Verwendung von Code folgende Zeile.

TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
    tabLayout.addTab(tabLayout.newTab().setIcon());