デザイン支援ライブラリを使用してタブを作成しています。デフォルトでは、テキストを含むタブが作成されます。アイコンだけのタブを作成するにはどうすればよいですか? また、現在選択されているタブの場合はアイコンの色を変更したいと思います。 </p>
5037 次
4 に答える
8
これを使用して、viewPager を設定します。
public class SectionPagerAdapter extends FragmentPagerAdapter {
public SectionPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return mFragmentA;
case 1:
return mFragmentB;
case 2:
return mFragmentC;
default:
return null;
}
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
return ""; // This removes the title, as you wish
}
}
そして、これはonCreateViewで:
final TabLayout tabLayout = (TabLayout) v.findViewById(R.id.tab_layout);
final ViewPager viewPager = (ViewPager) v.findViewById(R.id.view_pager);
viewPager.setAdapter(new SectionPagerAdapter(getActivity().getSupportFragmentManager()));
tabLayout.setupWithViewPager(viewPager);
また、知っておくと便利です:
for (int i = 0; i < tabLayout.getTabCount(); i++) {
int iconId = -1;
switch (i) {
case 0:
iconId = R.drawable.icon1;
break;
case 1:
iconId = R.drawable.icon2;
break;
case 2:
iconId = R.drawable.icon3;
break;
}
tabLayout.getTabAt(i).setIcon(iconId);
}
// Needed since support libraries version 23.0.0
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
tabLayout.getTabAt(position).select();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {
@Override
public void onTabSelected(TabLayout.Tab tab) {
super.onTabSelected(tab);
}
});
選択したタブの色を変更するには:
tabLayout.setSelectedTabIndicatorColor(colorId); // For the line
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
for (int i = 0; i < tabLayout.getTabCount(); i++) {
tabLayout.getTabAt(i).getIcon().setTint(getResources().getColor(R.color.gray));
}
tabLayout.getTabAt(selectedTabPosition).getIcon().setTint(colorId);
}
于 2015-08-24T02:22:12.280 に答える
2
ビュー ページャー アダプターで空のタイトルを返すことができます。または、アダプターを再利用する必要がある場合は、次のようにタイトルを空に設定してアイコンを設定するだけです。
for (int i = 0; i < mTabLayout.getTabCount(); i++) {
TabLayout.Tab tab = mTabLayout.getTabAt(i);
tab.setIcon(R.drawable.icon);
tab.setText("");
}
于 2015-08-23T10:22:50.050 に答える
1
SpannableString を使用し、それに ImageSpan を追加することで、「アイコンのみ」の効果を得ることができます。参照: Android で画像を使用して PagerSlidingTabStrip を開発するにはどうすればよいですか?
于 2015-08-23T14:23:21.570 に答える
1
私が知っている直接的な方法はありません。Tab
しかし、ドキュメントを調べてみると、のアイコンを設定できることに気付きましたsetIcon()
だから多分あなたはこのようなことをします:
for (int i = 0; i < mTabLayout.getTabCount(); i++) {
mTabLayout.getTabAt(i).setIcon(R.drawable.icon);
}
setCustomView()
タブでa を実行することもできます。次のようにします。
for (int i = 0; i < mTabLayout.getTabCount(); i++) {
View v = inflater.inflate(view, parent, false);
((ImageView) v).setImageResource(R.drawable.icon);
mTabLayout.getTabAt(i).setCustomView(v);
}
于 2015-08-23T09:55:42.523 に答える