14

Ich habe eine Dualpane auf einem Tablet-Format Landschaft und ich verwende Fragmente.Markieren oder unterstreichen Sie ausgewählte TabPageIndicator

Auf der linken Seite habe ich ein Fragment mit einem Listenansicht. Wenn ein Klick auf eine der Artikellisten erfolgt, lädt das rechte Fragment das Detail.

Im Layout des rechten (Detail) -Fragment gibt es eine com.viewpagerindicator.TabPageIndicator und eine android.support.v4.view.ViewPager. Die ViewPager 2 Elemente geladen werden, und jeder hat seine com.viewpagerindicator.TabPageIndicator. Ich versuche, die ausgewählte Registerkarte hervorzuheben oder zu unterstreichen, aber es ist mir nicht gelungen.

Ich hoffe, Sie einige Ratschläge haben :)

+0

Bitte, Ihre Frage aktualisieren und einige Code hier setzen. – Wh1T3h4Ck5

Antwort

22

standardmäßig der TabPageIndicator gilt nicht jeden Stil. Zu ermöglichen, den Standardstil von ViewPagerIndicator die folgenden Zeile entweder dem application-Tag oder dem entsprechenden activity Tag in Ihrem manifest.xml

android:theme="@style/Theme.MyTheme" 

Dann fügen Sie eine res\values\styles.xml Datei zu Ihrem Projekt mit folgendem Inhalt

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="Theme.MyTheme" parent="@android:style/Theme.Light"> 
     <item name="vpiTabPageIndicatorStyle">@style/Widget.TabPageIndicator</item> 
    </style> 
</resources> 

Ich benutze das Android-Light-Theme für meine Anwendung, aber vielleicht möchtest du das jetzt zu dem Theme ändern, das du gerade benutzt.

Wenn Sie Änderungen an den Standard VPI-Stil machen, die styles.xml Datei so zu etwas ändern:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <style name="Theme.MyTheme" parent="@android:style/Theme.Light"> 
    <item name="vpiTabPageIndicatorStyle">@style/MyTabPageIndicator</item> 
    </style> 

    <style name="MyTabPageIndicator" parent="Widget.TabPageIndicator"> 
    <item name="android:gravity">center</item> 
    <item name="android:background">@drawable/vpi__tab_indicator</item> 
    <item name="android:paddingLeft">22dip</item> 
    <item name="android:paddingRight">22dip</item> 
    <item name="android:paddingTop">12dp</item> 
    <item name="android:paddingBottom">12dp</item> 
    <item name="android:textAppearance">@style/MyTabPageIndicator.Text</item> 
    <item name="android:textSize">12sp</item> 
    <item name="android:maxLines">1</item> 
    </style> 

    <style name="MyTabPageIndicator.Text" parent="TextAppearance.TabPageIndicator"> 
    <item name="android:textStyle">bold</item> 
    <item name="android:textColor">@color/vpi__dark_theme</item> 
    </style> 

</resources> 

Beachten Sie, dass die obigen Einstellungen sind genau die gleiche wie der Standard-VPI-Stil für das TabPageIndicactor, so Sie müssen noch die gewünschten Änderungen vornehmen.

+0

Das hat mich verrückt gemacht, danke! – HGPB

+0

Hallo, ich benutze eine Aktionsleiste, wie kann ich beide Aktionsleiste und Android: theme = "@ style/Theme.MyTheme" auf Manifest-Datei implementieren? – NPE

+1

@StackOverflowError Ich denke, dass das Problem [hier] (http://stackoverflow.com/q/9737103/741249) und [hier] beantwortet wird (http://stackoverflow.com/q/12267660/741249) – THelper

1

Verwenden Sie einfach zwei Bibliothek 1) Sherlock Aktionsleiste 2) ViewPageIndicator und implementieren tabPageIndicator anzeigen es wird es bietet Ihnen Standard-Registerkarte und für highliget Registerkarte bieten unterstreichen. Wenn Sie die Unterstreichfarbe ändern möchten, müssen Sie die zeichnbaren 9. Patch-Bilder ändern, die in Unterlinde verwendet wurden. Hier

ist Beispielcode

XML-Ansicht Probe

   <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="vertical" > 

     <com.viewpagerindicator.TabPageIndicator 
      android:id="@+id/indicator" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/lock_background_greeen" 
      /> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/pager" 
      android:layout_width="fill_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" /> 
    </LinearLayout> 
</FrameLayout> 

Fragment-Code

 final FragmentPagerAdapter adapter = new FragmentChildPageAdapter(getChildFragmentManager());//getActivity().getSupportFragmentManager() 

    final ViewPager pager = (ViewPager) v.findViewById(R.id.pager); 
    pager.setAdapter(adapter); 

    final TabPageIndicator indicator = (TabPageIndicator) v.findViewById(R.id.indicator); 
    indicator.setViewPager(pager);