2015-07-24 15 views
5

zeigt Ich versuche folgendes zu machen Tab mit tablayout diese https://guides.codepath.com/android/Google-Play-Style-Tabs-using-TabLayout#add-custom-view-to-tablayoutTabLayout Icon nicht

Jetzt mit dem imagespan Ich versuche Symbol anstelle von Text zu zeigen. Aber kann man ohne etwas Glück darauf hinweisen, was in diesem Tutorial fehlt?

Hier ist der Code

public class HomeActivity extends FragmentActivity { 

//Fragments List 
public ArrayList <Fragment> fragmentList; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_home); 

    setUpFragmentList(); 

    // Get the ViewPager and set it's PagerAdapter so that it can display items 
    ViewPager viewPager = (ViewPager) findViewById(R.id.home_viewpager); 
    viewPager.setAdapter(new HomeFragmentPagerAdapter(getSupportFragmentManager(), HomeActivity.this, fragmentList)); 

    // Give the TabLayout the ViewPager 
    TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs); 
    //start this 2 are to set the tab to fill entire screen 
    tabLayout.setTabMode(TabLayout.MODE_FIXED); 
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 
    //end this 2 are to set the tab to fill entire screen 

    tabLayout.setupWithViewPager(viewPager); 
    tabLayout.getTabAt(1).setIcon(R.drawable.ic_tab_down_activity); 

} 

private void setUpFragmentList() { 
    fragmentList = new ArrayList<>(); 

    fragmentList.add(new MyActivitesFragment()); 
    fragmentList.add(new ChatListFragment()); 
    fragmentList.add(new QuickMatchFragment()); 
    fragmentList.add(new FilterMatchFragment()); 
} 
} 


public class HomeFragmentPagerAdapter extends FragmentPagerAdapter { 
private String tabTitles[] = new String[] { "Tab1", "Tab2", "Tab3" ,"Tab4"}; 
private Context context; 

private ArrayList <Fragment> fragmentList; 

private int[] imageResId = { 
     // unclicked 
     R.drawable.ic_tab_down_activity, 
     R.drawable.ic_tab_down_chat, 
     R.drawable.ic_tab_down_find, 
     R.drawable.ic_tab_down_filter, 
}; 

public HomeFragmentPagerAdapter(FragmentManager fm, Context context, ArrayList <Fragment> fragmentList) { 
    super(fm); 
    this.context = context; 
    this.fragmentList = fragmentList; 
} 

@Override 
public int getCount() { 
    return fragmentList.size(); 
} 

@Override 
public Fragment getItem(int position) { 
    return fragmentList.get(position); 
} 

@Override 
public CharSequence getPageTitle(int position) { 

    Drawable image = context.getResources().getDrawable(imageResId[position]); 
    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; 
} 
} 
+0

Dieser Teil sieht gut aus, zeigen Sie alle Ihre Tabs Code. –

Antwort

0

Sie haben keine Registerkarte hinzufügen.

Fügen Sie eine Registerkarte wie folgt hinzu: tabLayout.addTab (tabLayout.newTab(). SetText ("Registerkarte Eins")).

0

Nun ich denke, dass Sie den Hauptpunkt in Ihrem XML fehlen. Legen Sie den Text Darstellungsstil für das Layout Ihrer Registerkarte fest. d. h. textAllCaps = false, andernfalls funktioniert die Bildspanne nicht.

+1

Auch die Einstellung auf false funktioniert nicht – pnavk

3

Setzen Sie in Ihrer benutzerdefinierten Registerkartenlayoutdatei textAllCaps einfach auf false. Es wird funktionieren :) Grund, das Bild wird in Zeichen umgewandelt, dann, wenn es wahr ist, dann wird die Umwandlung in Kapital nicht das Bild rendern.

<style name="MyCustomTabTextAppearance" parent="TextAppearance.Design.Tab"> 
    <item name="android:textSize">16sp</item> 
    <item name="android:textColor">?android:textColorSecondary</item> 
    <item name="textAllCaps">false</item> 
</style> 
+0

Danke für Ihre Hilfe, löste es mein Problem! MyCustomTabTextAppearance in styles.xml hinzugefügt und app: tabTextAppearance = Attribut "@ style/MyCustomTabTextAppearance" in der android.support.design.widget.TabLayout-Ansicht unter Aktivität xml. – lbartolic

3

Anscheinend habe ich die Lösung unter Verwendung TabLayout.getTabAt (i) .setIcon (imageResId [i]) fand heraus;

Zuerst ist meine Absicht, in der Lage zu sein, alle Ikone vom viewpager Adapter zu setzen. aber da habe ich keine ahnung und auch keine zeit die lösung zu finden. Ich würde stattdessen diesen anderen Trick verwenden, den ich herausgefunden habe.

und auch Bild zu wechseln um i TabLayout.TabLayoutOnPageChangeListener verwenden

Hoffnung dies jemand hilft, die dies auch nötig. =]