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

时间:2017-08-20 05:23:07

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

我正在使用自定义文本和图标构建标签布局。使用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");
    }
}

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

3 个答案:

答案 0 :(得分:1)

      <main class='main_content'>
        <% for (var j = 0; j < messagedata.length; j++) { %>
        <div class='message_box'>
            <p><strong><%= messagedata[j].username %></strong>: <%= 
            messagedata[j].body %></p>
        <% for (var i = 0; i < commentInfo.length; i++) { %>
            <% if (commentInfo.mess_id == messagedata.comment_id) { %>
                 <p><strong><%= commentInfo[i].username %> 
                 comments</strong>: <%= commentInfo[i].commentsbody %></p>
            <% } %>
       <% } %>
       <% } %>
       </div>
     </main>

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

通过您提供的链接:

如果提供的视图包含ID为text1的TextView,则将使用给定setText(CharSequence)的值进行更新。同样,如果此布局包含带有ID图标的ImageView,则它将使用setIcon(Drawable)的值进行更新。

您没有将这些ID设置为TextView和ImageView。