2015-12-21 9 views
8

Sto utilizzando un TabLayout con 3 schede. Ho personalizzato la vista delle mie schede e per questo, ho bisogno di rimuovere la seguente riga sotto le linguette (lo screenshot doesnt venire dalla mia app):Rimuovere la riga del selettore nella scheda corrente per un TabLayout

enter image description here

Sono NON utilizzando un TabHost o un TabWidget e quindi, non posso usare setStripEnabled(false). Impostare lo sfondo su trasparente non cambia nulla.

Ecco il mio 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> 

Tutta la risposta che ho trovato sono stati utilizzando TabHost, TabWidget. Nel mio caso, sto usando uno TabLayout e tre Tab. Come posso rimuovere questa linea in questo caso? Molte grazie.

EDIT Alcuni metodi di TabLayout non possono essere risolti nel mio codice per alcuni motivi. C'è il codice Java che uso:

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; 

e la sua importazione:

import android.support.design.widget.TabLayout; 

risposta

15

Mentre i due risposte suggerite, la chiave è stata la tabIndicatorHeight attributo.

Tuttavia, il metodo dell'API è stato, per alcuni motivi, impossibile da risolvere. In questo caso è necessario risolvere il problema direttamente dal xml, in questo modo:

 app:tabIndicatorHeight="0dp" 

Nella tua <android.support.design.widget.TabLayout> Layout.

Per fare un esempio:

<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" /> 
4

sembra che ci sia API simili;
void setSelectedTabIndicatorColor(int color)
void setSelectedTabIndicatorHeight(int height)

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

+0

Non riesco a risolvere questi metodi. fammi modificare il mio post principale con il codice java, forse sarà d'aiuto. – Virthuss

+0

Ho trovato un modo per applicare questo attraverso xml invece. Ti inviterò :) Grazie! – Virthuss

2

È possibile impostare scheda altezza indicatore a 0 per "rimozione", per esempio l'uso: tabLayout.setSelectedTabIndicatorHeight(0);

+0

Impossibile risolvere questo metodo ... – Virthuss

+0

Stai utilizzando TabLayout dalla libreria di progettazione del supporto Android? – jomartigcal

+0

TabLayout tabLayout = (TabLayout) findViewById (R.id.tabs); then tabLayout.setSelectedTabIndicatorHeight (0); – jomartigcal

4

Per TabLayout basta usare questo - "tabLayout.setSelectedTabIndicatorColor (Color.TRANSPARENT);"

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

Anche io affrontato lo stesso problema recentemente. Ho trovato l'attributo xml di altezza e cambiarlo in 0dp ha fatto il trucco per me.

app:tabIndicatorHeight="0dp" 

O

Allo stesso modo ho la sensazione che cambiare l'attributo di colore dell'indicatore per lo stesso come sfondo delle schede dovrebbe farlo. Non ho provato questa soluzione, ma penso che dovrebbe funzionare anche.

app:tabIndicatorColor="#9cc8df" 

La prima opzione è migliore e ha funzionato per me.

Nessuno di questi è buono come disattivare effettivamente l'indicatore, ma risolvere il problema a prescindere.

Problemi correlati