2015-09-25 13 views
5

Questo esempio viene creato in Xamarin utilizzando C#, se si conosce la risposta in Java, sarò in grado di convertirlo in C# troppoIcone del display su FragmentPagerAdapter schede

Sto utilizzando la FragmentPagerAdapter da visualizzare tre diversi frammenti come schede. Sono in grado di visualizzare un testo nelle intestazioni Tab in questo modo:

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

Questo funziona bene: sto vedendo tre schede con titoli Tab: 0, Tab: 1 e Tab: 2.

Ora, voglio sostituire il testo con alcune icone. Sto cercando di farlo lo stesso è stato con il PagerSlidingTabStrip, utilizzando uno SpannableString & 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; 
} 

Purtroppo, quello che sto vedendo in questo momento è tre volte [icon] come intestazioni. Sembra che le icone non vengano aggiunte alle intestazioni.

Sto facendo qualcosa di sbagliato qui? Grazie per qualsiasi aiuto!

risposta

12

Per impostazione predefinita, la scheda creata da TabLayout imposta la proprietà textAllCaps come vera, impedendo il rendering di ImageSpans. È possibile ignorare questo comportamento modificando la proprietà tabTestAppearance.

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

Quindi è possibile aggiungere lo stile MyCustomTabLayout al TabLayout in questo modo:

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

Grazie! * facepalm * – MarcoK

+0

Ho provato questo e applicato lo stile al Tablayout come questo android: textAppearance = "@ style/MyCustomTabLayout" Ma non funziona ho appena ottenuto la stringa '[icona]' –

+0

Hai ragione. Devi applicare lo stile a TabLayout. Voglio modificare la mia risposta. –

Problemi correlati