用ActionBarSherlock样式化选项卡指示器



我目前无法自定义标签指示器在我的应用程序时使用Actionbarsherlock。我正试图将默认颜色(蓝色)更改为指示器的白色。所有其他定制都按预期工作。我甚至无法移除标签指示器。我是否在xml代码中遗漏了某些内容,或者可能有什么问题?还要注意,我的最小sdk在manifest -文件中被设置为14。所有的帮助是需要的,所以我可以设法找到问题的根源:/Regards

Tabs.java

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tab_host);
ActionBar actionBar = getSupportActionBar();
            actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
            actionBar.setDisplayShowTitleEnabled(true);
            actionBar.setDisplayShowHomeEnabled(true);
            actionBar.setTitle(R.string.LabelTitleAbout);

            actionBar.addTab(actionBar.newTab().
                setTabListener(new TabListener<LandingSearch>(this, getString(R.string.LabelSearchTabTitle), LandingSearch.class, null)));
the code continues with the constructor etc...

tab_host.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <LinearLayout
        android:id="@+id/tabs_navigation_content"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </LinearLayout>
</LinearLayout>

值/themes.xml

<style name="Theme.ML" parent="@style/Theme.Sherlock">
    <item name="windowNoTitle">true</item>
    <item name="android:actionBarTabBarStyle">@style/Theme.ML.Tabs</item>
     <item name="actionBarTabBarStyle">@style/Theme.ML.Tabs</item>
</style>
<style name="Theme.ML.Tabs" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
    <item name="windowNoTitle">true</item>
    <item name="background">@drawable/tab_bar_background</item> 
    <item name="android:background">@drawable/tab_bar_background</item>
</style>
...

可拉的/tab_bar_background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/menu_blank_off"/>
  <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/tab_bar_background_selected"/>
  <item android:state_selected="false" android:state_pressed="true" android:drawable="@color/white"/>
  <item android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/tab_bar_background_selected_pressed"/>
</selector>

tab_bar_background_selected.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:top="-5dp" android:left="-5dp" android:right="-5dp">
        <shape android:shape="rectangle">
            <stroke android:color="#ffffff" android:width="5dp"/>
        </shape>
    </item>
</layer-list>

你可以使用操作栏样式生成器完全自定义操作栏样式,这里有一个操作栏样式生成器的链接:动作栏样式生成器

你也可以从这个例子:-自定义操作栏

正如Vikram所说,您已经使用API 14+,为什么要在默认操作栏上使用ActionBarSherlock

可以使用Android操作栏样式生成器自定义不同变化的操作栏。

为什么ABS标签指示灯不变化?

正如你所说的,你的操作栏标签指示器的颜色没有被改变,原因如下我们需要在属性应该属于的地方设置样式。

<style name="Theme.ML.Tabs" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">

不是设置Action Bar Tabs样式的正确位置。

解决方案:-

<style name="Theme.ML" parent="@style/Theme.Sherlock">
    <item name="windowNoTitle">true</item>
    <item name="android:actionBarTabStyle">@style/Theme.ML.Tabs</item>
    <item name="actionBarTabBarStyle">@style/Theme.ML.Tabs</item>
</style>
<style name="Theme.ML.Tabs" parent="@style/Widget.Sherlock.Light.ActionBar.TabView">
        <item name="android:background">@drawable/tab_bar_background</item>
</style>

相关内容

  • 没有找到相关文章

最新更新