2015-09-25 8 views
5

Dieses Beispiel in Xamarin erstellt wird, C#, wenn Sie die Antwort in Java kennen, werde ich in der Lage sein, es in C# konvertieren zuDisplay-Symbole auf FragmentPagerAdapter Registerkarten

mir die FragmentPagerAdapter mit angezeigt werden drei verschiedene Fragmente als Tabs. Ich bin in der Lage, etwas Text in den Tab-Header wie folgt angezeigt:

public override Java.Lang.ICharSequence GetPageTitleFormatted(int position) 
{ 
    return new Java.Lang.String("Tab: " + position); 
} 

Das funktioniert ganz gut: Ich sehe drei Registerkarten mit Titeln Tab: 0, Tab: 1 und Tab: 2.

Jetzt möchte ich den Text durch einige Symbole ersetzen. Ich versuche das gleiche zu tun wie mit der PagerSlidingTabStrip, unter Verwendung eines & ImageSpan.

public override Java.Lang.ICharSequence GetPageTitleFormatted(int position) 
{ 
    var image = Application.Context.Resources.GetDrawable(Resource.Drawable.icon); 
    image.SetBounds(0, 0, image.IntrinsicWidth, image.IntrinsicHeight); 

    var spannableString = new Android.Text.SpannableString("[icon]"); 
    var imageSpan = new Android.Text.Style.ImageSpan(image, Android.Text.Style.SpanAlign.Bottom); 
    spannableString.SetSpan(imageSpan, 0, 1, Android.Text.SpanTypes.ExclusiveExclusive); 
    return spannableString; 
} 

Leider, was jetzt ist ich sehe dreimal [icon] als Header. Es sieht so aus, als würden die Icons den Überschriften überhaupt nicht hinzugefügt.

Mache ich hier etwas falsch? Danke für jede Hilfe!

Antwort

12

Standardmäßig setzt die von TabLayout erstellte Registerkarte die textAllCaps-Eigenschaft auf true, wodurch verhindert wird, dass ImageSpans gerendert wird. Sie können dieses Verhalten überschreiben, indem Sie die Eigenschaft tabTextAppearance ändern.

<android.support.design.widget.TabLayout 
android:id="@+id/tabs" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
style="@style/MyCustomTabLayout" /> 
+1

Vielen Dank! * facepalm * – MarcoK

+0

Ich habe dies versucht und den Stil auf das Tablayout wie folgt angewendet android: textAppearance = "@ style/MyCustomTabLayout" Aber es funktioniert nicht Ich habe nur die '[icon]' String –

+0

Sie haben Recht. Sie müssen den Stil auf das TabLayout anwenden. Ich werde meine Antwort bearbeiten. –

0

Just Like Youp Said wir die oben Stil als

style="@style/MyCustomTabLayout" 

anwenden, aber nicht

:

<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> 

Dann können Sie die MyCustomTabLayout Style Ihre TabLayout wie folgt hinzufügen

android:textAppearance="@style/MyCustomTabLayout" 

Weitere Informationen finden Sie unter https://guides.codepath.com/android/Google-Play-Style-Tabs-using-TabLayout

Verwandte Themen