web-dev-qa-db-ja.com

TabLayoutの現在のタブの下のセレクター行を削除します

3つのタブを持つTabLayoutを使用しています。タブのビューをカスタマイズしたので、タブの下の次の行を削除する必要があります(スクリーンショットはアプリからのものではありません)。

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>

私が見つけたすべての答えは、TabHostTabWidgetを使用することでした。私の場合、1つのTabLayoutと3つの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;
17
Virthuss

2つの答えが示唆したように、キーは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" />
39
Virthuss

私も最近同じ問題に直面しました。 height xml属性を見つけ、それを0dpに変更するとうまくいきました。

app:tabIndicatorHeight="0dp"

[〜#〜]または[〜#〜]

同様に、インジケーターの色属性をタブの背景と同じに変更すると、それも実行されるはずです。私はこのソリューションをテストしていませんが、うまくいくと思います。

app:tabIndicatorColor="#9cc8df"

最初のオプションの方が優れており、私にとってはうまくいきました。

これらはどれも実際にインジケーターを無効にするほど優れていませんが、問題を解決します。

8
mysticfyst

TabLayoutの場合、これを使用する必要があります-"tabLayout.setSelectedTabIndicatorColor(Color.TRANSPARENT);"

TabLayout tabLayout = (TabLayout) fragmentView.findViewById(R.id.tabs);
tabLayout.setSelectedTabIndicatorColor(Color.TRANSPARENT);
5
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

最善の解決策は、タブインジケーターをnullに設定することです。

app:tabIndicator = "@ null"

1
Rohit P Soman