2014-03-02 7 views
5

Ich habe eine scrollbare Registerkarte + Swipe implementiert, alles funktioniert gut. Jedoch habe ich einige Probleme mit dem aktuellen PagerTabStrip bezogen werden:Einige Probleme und Schwierigkeiten in PagerTabStrip

1. Ich kann nicht den aktuellen Titel Bold

2. machen Kann die Standard-Tab I angezeigt werden soll nicht wählen (zB : Die Registerkarte mit der Position 2) wie die Registerkarten in der Google Play App

3. Die erste und letzte Registerkarte haben jeweils einen Rand links und rechts, kann ich es auf 0dp setzen ?

Dies ist, was ich für das Styling der Registerkarten tun könnte:

Java:

strip = (PagerTabStrip) findViewById(R.id.pager_tab_strip); 
strip.setTabIndicatorColorResource(R.color.light_blue); 
strip.setDrawFullUnderline(true); 

Layout:

<android.support.v4.view.PagerTabStrip 
    android:id="@+id/pager_tab_strip" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="top" 
    android:background="@drawable/pagertitle_border_bottom" 
    android:paddingBottom="15dp" 
    android:paddingTop="15dp" 
    android:textColor="@color/light_blue" /> 

Kann mir jemand mit den 3 Punkten helfen? Vielen Dank.

+0

haben Sie eine Lösung finden? –

+0

@ CodePond.org: Eigentlich nein, mit diesem Widget. Die einzige Lösung, die ich gefunden habe, ist Ihre eigene Pager erstellen: Titel scrollbare Ansicht und wischen Content-Ansichten Listener ... – Copernic

+0

Bitte beachten Sie meine vorgeschlagene Antwort. –

Antwort

12

Nun, ich habe tatsächlich eine richtige Lösung dafür gefunden. Vergiss PagerTabStrip;)

Anscheinend hat Google eine sample app veröffentlicht, die den genauen Quellcode enthält, den sie in der Google Play App verwendet haben. Es ist super einfach zu bedienen. Laden Sie die Beispiel-App herunter und kopieren Sie zwei Dateien von dort: SlidingTabLayout.java und SlidingTabStrip.java.

Dann in Ihrem Layout XML, fügen Sie den folgenden über dem ViewPager (ändern com.example zu Ihrem Paketnamen):

<com.example.SlidingTabLayout 
     android:id="@+id/sliding_tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

<android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_marginTop="5dp" 
     android:layout_weight="1.5" 
     android:layout_width="match_parent" 
     android:background="@android:color/white" 
     android:layout_height="0dp"/> 

und die folgenden auf die Aktivität hinzufügen, nachdem Sie die ViewPager initialisieren:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mViewPager = (ViewPager) findViewById(R.id.pager); 
     mViewPager.setAdapter(new GridPagerAdapter(getSupportFragmentManager())); 
     // Initialize the SlidingTabLayout. Note that the order is important. First init ViewPager and Adapter and only then init SlidingTabLayout 
     mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.sliding_tabs); 
     mSlidingTabLayout.setViewPager(mViewPager); 
    } 

SlidingTabLayout 's API ermöglicht Ihnen einfache grundlegende Styling wie z. B. Ändern der Registerkarte Farbe, die Teilerfarbe, die Farbe der Anzeige, etc.

Noch eine wichtige Sache, die von Google bereitgestellte SlidingTabLayout funktioniert gut, wenn Sie viele Registerkarten haben. Wenn Sie jedoch beispielsweise drei Registerkarten haben, sehen Sie, dass alle Registerkarten nach links ausgerichtet sind und eine große Lücke zwischen der letzten Registerkarte und der Breite der Ansicht besteht. enter image description here

Um dies zu überwinden, modifizieren SlidingTabLayout.java nach Zeile 173 knapp unter TextView textView = new TextView(context); die folgende Zeile:

textView.setLayoutParams(new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1f));

Jetzt ist der Raum zwischen den Tabs richtig aufgeteilt werden: Haben enter image description here

+1

Ich liebe dich_____ –

+0

Um Ansichten gleichmäßig zu füllen, kannst du einfach die Funktion setDistributeEvenly aufrufen (true); – WISHY

0

ein Blick darauf.Dieser Kerl erklärt sehr deutlich, wie Tab-Layout

Understanding Sliding Tab Layout

Für jede Anpassung Sliding verwenden

Ändern Sie den Code in der Klasse SlidingTabLayout.java

Verwandte Themen