TabLayout setText() 和 setIcon() 在自定义视图中无法正常工作



我正在构建一个带有自定义文本和图标的选项卡布局。选项卡布局是使用视图页器设置的。我按照此参考设置自定义视图。 https://developer.android.com/reference/android/support/design/widget/TabLayout.Tab.html#setCustomView(android.view.View(

但是当我使用 setText(( 和 setIcon(( 设置时,文本和图标没有更新。

custom_tab.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="top"
android:textColor="#ffffff"
android:textSize="10dp" />
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>

MainActivity.java - setUpTabIcons((

private void setupTabIcons() {
private int[] tabIcons = {
R.drawable.ic_art_track_black_24dp,
R.drawable.ic_notifications_black_24dp,
R.drawable.ic_chat_bubble_black_24dp,
R.drawable.ic_person_add_black_24dp
};
for (int i = 0; i < 4; i++) {
tabLayout.getTabAt(i).setCustomView(R.layout.custom_tab);
tabLayout.getTabAt(i).setIcon(tabIcons[i]);
tabLayout.getTabAt(i).setText("Random");
}
}

我做错了吗?任何替代方法都将不胜感激。

private void setupTabs() {
String[] titles = getResources().getStringArray(R.array.titles);
int[] icons = ----
for (int i = 0; i < titles.length; i++) {
if (mTabLayout != null) {
TabLayout.Tab tab = mTabLayout.getTabAt(i);
if (tab != null)
tab.setCustomView(prepareTabView(titles[i], icons[i]));
}
}
}
private View prepareTabView(String title, int icon) {
View view = View.inflate(getContext(), R.layout.list_item_tab, null);
TextView tabTitle = (TextView) view.findViewById(R.id.tab_title);
ImageView tabIcon = (ImageView ) view.findViewById(R.id.tab_icon);
tabTitle.setText(title);
tabIcon.setImageResouce(icon);
return view;
}

对于您的 TextView 元素,您应该使用android:id="@android:id/text1"这将是正确的 int 值 (16908308(。图标也是如此 - id 应该'@android:id/icon'

最新更新