首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TabLayout setText()和setIcon()无法与自定义视图一起正常工作

TabLayout setText()和setIcon()无法与自定义视图一起正常工作
EN

Stack Overflow用户
提问于 2017-08-20 13:23:07
回答 2查看 1.1K关注 0票数 1

我正在建立一个自定义文本和图标选项卡布局。选项卡布局是使用viewpager设置的。我遵循这个参考来设置自定义视图。https://developer.android.com/reference/android/support/design/widget/TabLayout.Tab.html#setCustomView(android.view.View)

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

custom_tab.xml

代码语言:javascript
复制
<?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()

代码语言:javascript
复制
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");
    }
}

我做错了吗?任何可供选择的方法都将受到欢迎。

EN

回答 2

Stack Overflow用户

发布于 2017-08-20 20:10:48

代码语言:javascript
复制
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;
}
票数 1
EN

Stack Overflow用户

发布于 2020-01-04 09:30:41

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45778742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档