您好,我之前遇到过同样的问题,这是我能找到的最佳解决方案:
你应该使用(setCustomView),首先创建一个新的布局文件
让我们命名它(customtab.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:id="@+id/icon"
android:layout_gravity="center_horizontal" />
</LinearLayout>
然后对每个选项卡执行以下操作:(使用相同的布局 .xml)
View view1 = getLayoutInflater().inflate(R.layout.customtab, null);
view1.findViewById(R.id.icon).setBackgroundResource(R.drawable.my1);
tabLayout.addTab(tabLayout.newTab().setCustomView(view1));
View view2 = getLayoutInflater().inflate(R.layout.customtab, null);
view2.findViewById(R.id.icon).setBackgroundResource(R.drawable.my2);
tabLayout.addTab(tabLayout.newTab().setCustomView(view2));
View view3 = getLayoutInflater().inflate(R.layout.customtab, null);
view3.findViewById(R.id.icon).setBackgroundResource(R.drawable.my3);
tabLayout.addTab(tabLayout.newTab().setCustomView(view3));
...
或者
以类似的方式
public static final int[] tabIcon = {R.drawable.icon_one, R.drawable.icon_two, R.drawable.icon_three};
private void setCustomTabs() {
for (int i = 0; i < tabIcon.length; i++) {
View view = getLayoutInflater().inflate(R.layout.customtab,null);
TabLayout.Tab tab = tabLayout.getTabAt(i);
view.findViewById(R.id.icon).setBackgroundResource(tabIcon[i]);
if(tab!=null) tab.setCustomView(view);
}
}