我想创建两个不同样式的标签。我必须做些什么来得到这样的结果?例如?
示例:
我现在拥有的东西:
TabsActivity
public class TabsActivity extends SherlockFragmentActivity {
private TabsAdapter mTabsAdapter;
private ActionBar mActionBar;
private TabHost tabHost;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.l_maintab);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
BitmapDrawable bg = (BitmapDrawable)
getResources().getDrawable(R.drawable.bg_striped);
getSupportActionBar().setBackgroundDrawable(bg);
BitmapDrawable bgSplit = (BitmapDrawable)
getResources().getDrawable(R.drawable.bg_striped_split_img);
bgSplit.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
getSupportActionBar().setSplitBackgroundDrawable(bgSplit);
}
final ActionBar bar = getSupportActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayOptions(0, ActionBar.DISPLAY_USE_LOGO);
bar.setDisplayShowTitleEnabled(true);
bar.setDisplayShowHomeEnabled(true);
mTabsAdapter = new TabsAdapter(this, (ViewPager) findViewById(R.id.pager));
ActionBar.Tab events_tab = bar.newTab().setText("Events");
ActionBar.Tab volo_tab = bar.newTab().setText("Volunteers");
mTabsAdapter.addTab(events_tab, EventFragment.class, null);
mTabsAdapter.addTab(volo_tab, UserFragment.class, null);
bar.selectTab(bar.getTabAt(tabnum));
}
l_maintab.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
答案 0 :(得分:0)
这由您分配给选项卡的背景(通常通过样式和主题)控制。为选项卡创建样式:
<style name="MyTabStyle" parent="Widget.Sherlock.ActionBar.TabView">
<item name="android:background">@drawable/my_tab_indicator</item>
</style>
我已经扩展了ActionBarSherlock样式,以便唯一相关的覆盖是background属性。在您的主题定义中,将这些添加到您的主题:
<item name="actionBarTabStyle">@style/MyTabStyle</item>
<item name="android:actionBarTabStyle">@style/MyTabStyle</item>
然后,您需要做的就是为每个州创建一个可绘制资源,并为您的背景添加一个州列表可绘制资源。
编辑: 如果您有两种不同的标签样式:
<style name="MyTabStyle" parent="Widget.Sherlock.ActionBar.TabView">
<item name="android:background">@drawable/my_tab_indicator</item>
</style>
<style name="MyOtherTabStyle" parent="Widget.Sherlock.ActionBar.TabView">
<item name="android:background">@drawable/my_other_tab_indicator</item>
</style>
制作应用主题,然后再制作第二个主题:
<style name="MyAppTheme" parent="Theme.Sherlock...">
<!-- other theme attributes -->
<item name="actionBarTabStyle">@style/MyTabStyle</item>
<item name="android:actionBarTabStyle">@style/MyTabStyle</item>
</style>
<style name="MyAppTheme.Alternate">
<!-- Override just the tab style -->
<item name="actionBarTabStyle">@style/MyOtherTabStyle</item>
<item name="android:actionBarTabStyle">@style/MyOtherTabStyle</item>
</style>
在您的清单中,在android:theme="@style/MyAppTheme"
元素中设置<application>
。对于需要第二个标签样式的活动,请在android:theme="@style/MyAppTheme.Alternate"
元素中使用<activity>
。