it-swarm.com.ru

Удалить строку селектора под текущей вкладкой для TabLayout

Я использую TabLayout с 3 вкладками. Я настроил вид моих вкладок и поэтому мне нужно удалить следующую строку под моими вкладками (скриншот не приходит из моего приложения):

 enter image description here

Я НЕ использую TabHost или TabWidget, и поэтому я не могу использовать setStripEnabled(false). Установка прозрачного фона также ничего не меняет.

Вот мой XML:

<Android.support.design.widget.AppBarLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:orientation="vertical" Android:padding="4dip"
    Android:layout_above="@+id/bottomcontent3"
    Android:gravity="center_horizontal"
    Android:background="@Android:color/white"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <Android.support.design.widget.TabLayout
        Android:id="@+id/comtabs"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_margin="5dp"
        app:tabPaddingStart="0dp"
        app:tabPaddingEnd="0dp"
        app:tabMode="fixed"
        app:tabGravity="fill"
        Android:background="@Android:color/white" />

    <Android.support.v4.view.ViewPager xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:id="@+id/compager"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent">
    </Android.support.v4.view.ViewPager>

</Android.support.design.widget.AppBarLayout>

Все ответы, которые я нашел, использовали TabHost, TabWidget. В моем случае я использую одну TabLayout и три Tab. Как я могу удалить эту строку в этом случае? Большое спасибо.

EDIT Некоторые методы из TabLayout не могут быть разрешены в моем коде по некоторым причинам. Вот код Java, который я использую:

TabLayout tabLayout = (TabLayout) view.findViewById(R.id.comtabs);
        tabLayout.setTabMode(TabLayout.MODE_FIXED);


        // add tabs
        tabLayout.addTab(tabLayout.newTab());
        tabLayout.addTab(tabLayout.newTab());
        tabLayout.addTab(tabLayout.newTab());

        RelativeLayout layout1 = (RelativeLayout) inflater.inflate(R.layout.communitytablayoutleft, container, false);
        RelativeLayout layout2 = (RelativeLayout) inflater.inflate(R.layout.communitytablayout, container, false);
        RelativeLayout layout3 = (RelativeLayout) inflater.inflate(R.layout.communitytablayoutright, container, false);
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);



        ViewPager pager = (ViewPager) view.findViewById(R.id.compager);
        CommunityPagerFragment adapter = new CommunityPagerFragment(getChildFragmentManager());

        pager.setAdapter(adapter);
        tabLayout.setupWithViewPager(pager);
        tabLayout.setOnTabSelectedListener(this);


        ((TextView)layout1.findViewById(R.id.tabtext)).setText(tabs[0]);
        ((TextView)layout2.findViewById(R.id.tabtext)).setText(tabs[1]);
        ((TextView)layout3.findViewById(R.id.tabtext)).setText(tabs[2]);



        tabLayout.getTabAt(0).setCustomView(layout1);
        tabLayout.getTabAt(1).setCustomView(layout2);
        tabLayout.getTabAt(2).setCustomView(layout3);
        //tabLayout.set

        return view;

и его импорт:

import Android.support.design.widget.TabLayout;
13
Virthuss

Как и предполагалось в двух ответах, ключом был атрибут tabIndicatorHeight.

Однако метод из API по некоторым причинам не может быть решен. В этом случае вы должны исправить это прямо из XML, следующим образом:

        app:tabIndicatorHeight="0dp"

В вашем <Android.support.design.widget.TabLayout> макете.

В качестве примера:

<Android.support.design.widget.TabLayout
    Android:id="@+id/comtabs"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_margin="5dp"
    app:tabIndicatorHeight="0dp"
    app:tabPaddingStart="0dp"
    app:tabPaddingEnd="0dp"
    app:tabMode="fixed"
    app:tabGravity="fill"
    Android:background="@Android:color/white" />
28
Virthuss

Даже я недавно столкнулся с той же проблемой. Я наткнулся на атрибут height xml и изменил его на 0dp.

app:tabIndicatorHeight="0dp"

ИЛИ ЖЕ

Точно так же я чувствую, что изменение атрибута цвета индикатора на тот же, что и на фоне вкладок, должно также сделать это. Я не проверял это решение, но я думаю, что оно также должно работать.

app:tabIndicatorColor="#9cc8df"

Первый вариант лучше, и он работал для меня.

Ничто из этого не так хорошо, как фактическое отключение индикатора, но решает проблему независимо.

6
mysticfyst

Для TabLayout вы должны использовать это - " tabLayout.setSelectedTabIndicatorColor (Color.TRANSPARENT); "

TabLayout tabLayout = (TabLayout) fragmentView.findViewById(R.id.tabs);
tabLayout.setSelectedTabIndicatorColor(Color.TRANSPARENT);
4
Sachin

кажется, что есть API, как;
void setSelectedTabIndicatorColor(int color)
void setSelectedTabIndicatorHeight(int height)

http://developer.Android.com/reference/Android/support/design/widget/TabLayout.html#setSelectedTabIndicatorColor(int)

4
wyverny

Вы можете установить высоту индикатора табуляции на 0, чтобы «удалить» его, например, используйте: tabLayout.setSelectedTabIndicatorHeight(0);

3
jomartigcal

Я думаю, что лучшее решение - установить индикатор табуляции на ноль.

приложение: tabIndicator = "@ нуль"

0
rohit