8

Ich bemerkte mit der neuesten Version von ViewPagerIndicator, ICS Stil Teiler werden unterstützt, ich versuchte, das Problem und die Lösung zu folgen, aber egal was ich tun kann ich nicht die Teiler zu bekommen Zeigen Sie meine Optionen in der Aktionsleiste für den TitlePageIndicator an. Ich habe das IcsLayout als Container, Trenner, ShowDividers und andere Eigenschaften hinzugefügt, bekomme aber immer noch nichts. Hier ist mein Layout (seltsam genug, wenn ich die IcsLayout zum viewpager Anzeige ein, die App-Abstürze wechseln):Divider funktioniert nicht für TitlePageIndicator mit viewpagerindicator & actionbarsherlock

<com.actionbarsherlock.internal.widget.IcsLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res/com.sosick.android.brink" 
    android:layout_width="match_parent" 
    android:divider="#ffffff" 
    android:showDividers="middle" 
    android:dividerPadding="8dp" 
    android:dividerHeight="10dp" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <com.viewpagerindicator.TitlePageIndicator 
     android:id="@+id/tpi_header" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     textColor="@color/text_light" 
     android:background="@drawable/ab_stacked_solid_brink" 
     app:topPadding="10dp" 
     app:footerPadding="15dp" 
     app:footerColor="#a4ded7" 
     app:footerIndicatorHeight="2dp" 
     app:footerIndicatorStyle="underline" 
     app:footerLineHeight="2dp" 
     app:selectedBold="false" /> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/vp_pages" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" /> 

</com.actionbarsherlock.internal.widget.IcsLinearLayout> 
+0

Lesen der Seite scheint es, dass sie sagen, es mit TabPageIndicator funktioniert, so dass ich Ich bin mir nicht sicher, ob es mit dem TitleIndicator möglich ist ...? – dariusriggins

+0

Bitte posten Sie eine Skizze oder eine Referenz, um besser herauszufinden, was Sie erreichen möchten. Vielen Dank. –

+0

Wenn Sie sich diese App ansehen, beachten Sie die vertikalen Teiler auf dem Titel Pager, das ist, was ich versuche zu erreichen. http://24.media.tumblr.com/8044b5ed0a7f8ad04468def5973275d7/tumblr_mi5ru5f7fZ1r2wjwko1_1280.png – dariusriggins

Antwort

4

Sie müssen Teilerparameter in Stilen deklarieren, anstatt in Layout-XML.

../res/values/styles.xml:

<style name="StyledIndicators" parent="@android:style/Theme.Light"> 
    <item name="vpiIconPageIndicatorStyle">@style/CustomIconIndicator</item> 
</style> 

<style name="CustomIconIndicator" parent="Widget.TabPageIndicator"> 
    <item name="android:divider">@drawable/custom_tab_indicator_divider</item> 
    <item name="android:showDividers">middle</item> 
    <item name="android:dividerPadding">10dp</item> 
</style> 

In Manifest für Ihre Aktivität:

<activity 
     android:name=".SampleIconsDefault" 
     android:label="Icons/Default" 
     android:theme="@style/StyledIndicators"> 
</activity> 
+0

Diese Lösung erfordert API Level 11, gibt es eine andere Möglichkeit, die auch für API Level 8 funktioniert? –

0

folgenden Code-Schnipsel sind mainlyfrom Android Developer Seite. Es gibt auch ein sehr gutes Beispiel für eine App/ein Projekt.

Verwenden Sie ViewPage als Container für Ihr Layout, z. res/layout/activity_main.xml:

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

ABS Implementieren‘ActionBar.TabListener in Ihrer Klasse hinzufügen und FragmentPagerAdapter oder FragmentStatePagerAdapter von Support-Bibliothek erweitern z.B .:

public class TheDesertFoxActivity extends SherlockFragmentActivity 
     implements ActionBar.TabListener { 

    private AppSectionsPagerAdapter mAppSectionsPagerAdapter; 
    private ViewPager mViewPager; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mAppSectionsPagerAdapter = new AppSectionsPagerAdapter(getSupportFragmentManager()); 

     // Set up action bar 
     final ActionBar actionBar = getSupportActionBar(); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

     // Set up the ViewPager, attaching the adapter 
     mViewPager = (ViewPager) findViewById(R.id.pager); 
     mViewPager.setAdapter(mAppSectionsPagerAdapter); 
     mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
      @Override 
      public void onPageSelected(int position) { 
       // When swiping between different app sections, select the corresponding tab 
       actionBar.setSelectedNavigationItem(position); 
      } 
     }); 

     // For each of the sections in the app, add a tab to the action bar 
     for (int i = 0; i < mAppSectionsPagerAdapter.getCount(); i++) { 
      // Create a tab with text corresponding to the page title defined by the adapter. 
      // Also specify this Activity object, which implements the TabListener interface, as the 
      // listener for when this tab is selected. 
      actionBar.addTab(actionBar.newTab() 
        .setText(mAppSectionsPagerAdapter.getPageTitle(i)) 
        .setTabListener(this)); 
     } 
    } 

    public static class AppSectionsPagerAdapter extends FragmentPagerAdapter { 

     public AppSectionsPagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int i) { 
      switch (i) { 

       Fragment fragment = new MyTabsFragment(); 
       Bundle args = new Bundle(); 
       args.putInt(MyTabsFragment.TAB_ID, i); 
       fragment.setArguments(args); 
       return fragment; 
      } 
     } 

     @Override 
     public int getCount() { 
      return <YOUR_TAB_COUNT>; 
     } 
    } 

    public static class MyTabsFragment extends Fragment { 

     public static final String TAB_ID = "tab_id"; 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      int layoutId = -1; 
      switch (getArguments(getInt(TAB_ID))) { 
       case 0: 
        layoutId = R.layout.fragment_first_tab; 
        break; 
       case 1: 
        layoutId = R.layout.fragment_second_tab; 
        break; 
       ... 
       ... 
       ... 
       default: 
        layoutId = R.layout.fragment_default_tab; 

      } 
      View rootView = inflater.inflate(layoutId, container, false); 
      return rootView; 
     } 
    } 
} 

Das ist es. Trennwände werden von ViewPager für Sie gestellt. Sie müssen sie nicht selbst hinzufügen.

Verwandte Themen