java - TabLayout setText() 和 setIcon() 无法与自定义 View 一起正常工作

标签 java android tabs android-custom-view android-tablayout

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

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

自定义标签.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;
}

关于java - TabLayout setText() 和 setIcon() 无法与自定义 View 一起正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45778742/

相关文章:

java - GSON解析错误:Expected BEGIN_OBJECT but was STRING when response value is null

java - 当我在 GitHub 上创建存储库时,它一直显示快速设置页面。我应该如何删除该页面并继续?

javascript - 为什么JQuery 2周没有使用后就不再工作了

jQuery UI 选项卡禁用选项卡导航

Vim matchadd 命令不适用于多个选项卡

java - 为什么 Java 应用程序需要应用程序服务器来托管?

android - 从左到右和从右到左的android滑动面板

android - 在 Android 中按比例调整 ImageView 的大小

java - Simplexml valuerequired 异常

php - 在选项卡中回显不同字段