8

Zauważyłem, że z najnowszą wersją ViewPagerIndicator obsługiwane są dzielniki stylu ICS, starałem się podążać za problemem i rozwiązaniem, ale bez względu na to, co robię, nie mogę uzyskać podziału na pokaż moje opcje na pasku akcji dla TitlePageIndicator. Dodałem IcsLayout jako kontener, wstawiłem dzielnik, showDividers i inne właściwości, ale wciąż nie dostaję nic. Oto mój układ (na tyle dziwnie, gdybym przełączyć IcsLayout do wskaźnika viewpager Jeden, awarie aplikacji):Dzielnik nie działa dla TitlePageIndicator z viewpagerindicator i 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

Czytanie strony wydaje się, że stwierdzenie, że to działa z TabPageIndicator, więc jestem nie jestem pewien, czy jest to możliwe z TitleIndicator ...? – dariusriggins

+0

Proszę napisać szkic lub odniesienie, aby lepiej zrozumieć, co chcesz osiągnąć. Dzięki. –

+0

Jeśli spojrzysz na tę aplikację, zwróć uwagę na pionowe dzielniki na Stronach tytułowych, to właśnie staram się osiągnąć. http://24.media.tumblr.com/8044b5ed0a7f8ad04468def5973275d7/tumblr_mi5ru5f7fZ1r2wjwko1_1280.png – dariusriggins

Odpowiedz

4

Należy zadeklarować parametry dzielników w stylach, a nie w układzie 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> 

W oczywisty dla swojej aktywności:

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

to rozwiązanie wymaga poziomu interfejsu API 11, czy istnieje inny sposób, który działa również na poziomie interfejsu API 8? –

0

Poniższe fragmenty kodu są mainlyfrom Android Developer miejscu. Istnieje również bardzo dobry przykład aplikacji/projektu.

Użyj ViewPage jako pojemnika do układu, np. 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" /> 

Wdrożenie ABS”ActionBar.TabListener w swojej klasie, dodawać i przedłużyć FragmentPagerAdapter lub FragmentStatePagerAdapter ze wsparcia biblioteki np .:

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; 
     } 
    } 
} 

to wszystko. Dzielniki zostaną umieszczone za Ciebie przez ViewPager. Nie musisz ich dodawać samodzielnie.

Powiązane problemy