2015-07-24 5 views
5

Я пытаюсь сделать вкладку с tablayout после этого https://guides.codepath.com/android/Google-Play-Style-Tabs-using-TabLayout#add-custom-view-to-tablayoutTabLayout Иконка не показывая

Теперь я пытаюсь показать значок вместо текста с помощью imagespan. Но не повезло, может ли кто-нибудь помочь указать, чего не хватает в этом учебнике?

Вот код

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

Эта часть выглядит отлично, показать все ваши коды вкладок. –

ответ

0

Вы не добавить любую вкладку.

Добавить закладку следующим образом: tabLayout.addTab (tabLayout.newTab(). SetText ("Tab One")) ;.

0

ну, я думаю, вам не хватает основной точки в вашем xml. Установить текст Внешний вид для макета вкладки. i.e textAllCaps = false, иначе масштаб изображения не будет работать.

+1

Даже установка этого параметра на false не работает – pnavk

3

В вашем файле компоновки вкладок просто сделайте textAllCaps равным false. Он будет работать :) Причина: изображение преобразуется в символы, тогда, если оно истинно, то преобразование их в капитал не будет отображать изображение.

<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

Спасибо за помощь, она решила мою проблему! Добавлен MyCustomTabTextAppearance в styles.xml и настроен app: tabTextAppearance = атрибут "@ style/MyCustomTabTextAppearance" на android.support.design.widget.TabLayout view под активностью xml. – lbartolic

3

Видимо я узнал, решение с помощью TabLayout.getTabAt (I) .setIcon (imageResId [I]);

Сначала мое намерение состояло в том, чтобы установить все иконки из адаптера viewpager. но так как я понятия не имел, ни времени, чтобы найти решение. я бы вместо этого использовал этот другой трюк, который я узнал.

, а также для переключения изображения вокруг я использую TabLayout.TabLayoutOnPageChangeListener

надеюсь, что это поможет кому-то, кто нуждался в этом тоже. =]

 Смежные вопросы

  • Нет связанных вопросов^_^