【问题标题】:TabLayout setText() and setIcon() not working properly with custom viewTabLayout setText() 和 setIcon() 无法与自定义视图一起正常工作
【发布时间】:2020-01-04 09:30:41
【问题描述】:

我正在构建一个带有自定义文本和图标的选项卡布局。选项卡布局是使用 viewpager 设置的。我按照这个参考来设置自定义视图。 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");
    }
}

我做错了吗?任何替代方法都将受到赞赏。

【问题讨论】:

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


    【解决方案1】:
    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;
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-19
        • 2019-10-24
        相关资源
        最近更新 更多