我注意到最新版本的ViewPagerIndicator,支持ICS样式分隔符,我试图按照问题和解决方案,但无论我做什么,我都无法让分隔符出现在我在操作栏上的选项上TitlePageIndicator。我添加了IcsLayout作为容器,放置了divider,showDividers和其他属性,但我仍然一无所获。这是我的布局(奇怪的是,如果我将IcsLayout切换到viewpager指示器,应用程序崩溃):
<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 :(得分:4)
您需要在样式中声明divider params,而不是在布局xml中声明。
../ RES /值/ 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>
在您的活动清单中:
<activity
android:name=".SampleIconsDefault"
android:label="Icons/Default"
android:theme="@style/StyledIndicators">
</activity>
答案 1 :(得分:0)
以下代码段主要来自Android Developer网站。还有一个非常好的示例app / project。
使用ViewPage
作为布局的容器,例如RES /布局/ 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'ActionBar.TabListener
,在支持库中添加和扩展FragmentPagerAdapter
或FragmentStatePagerAdapter
,例如:
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;
}
}
}
就是这样。分隔符将由ViewPager
为您提供。您不必自己添加它们。