gpt4 book ai didi

android - 自定义 View 可以用作 TabItem 吗?

转载 作者:IT王子 更新时间:2023-10-28 23:35:10 26 4
gpt4 key购买 nike

android中的TabLayout类为你提供了一个TabItem,可以让你指定一个文本和一个图标。是否可以将自定义 View 用作 TabItem?

我的标签看起来像这样

enter image description here

您可以看到,除了图标和文本标签之外,我还有一个通知符号(黄色圆圈内的数字)。我怎样才能制作这样的标签?

最佳答案

在某些情况下,我们可能希望为每个选项卡应用自定义 XML 布局,而不是默认选项卡 View 。为此,在将滑动选项卡附加到寻呼机后,遍历所有 TabLayout.Tabs:

public class MainActivity extends AppCompatActivity {

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

// Get the ViewPager and set it's PagerAdapter so that it can display items
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
SampleFragmentPagerAdapter pagerAdapter =
new SampleFragmentPagerAdapter(getSupportFragmentManager(), MainActivity.this);
viewPager.setAdapter(pagerAdapter);

// Give the TabLayout the ViewPager
TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs);
tabLayout.setupWithViewPager(viewPager);

// Iterate over all tabs and set the custom view
for (int i = 0; i < tabLayout.getTabCount(); i++) {
TabLayout.Tab tab = tabLayout.getTabAt(i);
tab.setCustomView(pagerAdapter.getTabView(i));
}
}

//...
}

接下来,我们将 getTabView(position) 方法添加到 SampleFragmentPagerAdapter 类中:

public class SampleFragmentPagerAdapter extends FragmentPagerAdapter {
private String tabTitles[] = new String[] { "Tab1", "Tab2" };
private int[] imageResId = { R.drawable.ic_one, R.drawable.ic_two };

public View getTabView(int position) {
// Given you have a custom layout in `res/layout/custom_tab.xml` with a TextView and ImageView
View v = LayoutInflater.from(context).inflate(R.layout.custom_tab, null);
TextView tv = (TextView) v.findViewById(R.id.textView);
tv.setText(tabTitles[position]);
ImageView img = (ImageView) v.findViewById(R.id.imgView);
img.setImageResource(imageResId[position]);
return v;
}

}

使用它,您可以为适配器中的每个页面设置任何自定义选项卡内容。

SOURCE

关于android - 自定义 View 可以用作 TabItem 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40896907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com