5
votes

I would like to customize tab widget by replacing the style with my own style. The item I am going to replace is as follow :

 <item name="android:tabLayout">@android:layout/tab_indicator_holo</item>

But I got this error : No resource found that matches the given name: attr 'android:tabLayout'

I have set the parent style like this :

<style name="customTabWidget" parent="@android:style/Widget.Holo.TabWidget">

The Project build target : Android 4.0

I also have cleaned the project but the error still exits. How to fix the error?

Thanks in advance.

1
tabLayout is a non-public attribute currently. Here's the bug tracking this: code.google.com/p/android/issues/detail?id=65832 If you want to customize TabWidget this way you might have to do it programmatically using TabSpec.setIndicator.Klaus

1 Answers

2
votes

I encountered a similar problem. At least part of the solution is to add the tabLayout attribute to res/values/attrs.xml. Here is the definition of the TabWidget styles, copied from the android-16 platform (notice the tabLayout attribute at the end):

<declare-styleable name="TabWidget">
    <!-- Drawable used to draw the divider between tabs. -->
    <attr name="divider" />
    <!-- Determines whether the strip under the tab indicators is drawn or not. -->
    <attr name="tabStripEnabled" format="boolean" />
    <!-- Drawable used to draw the left part of the strip underneath the tabs. -->
    <attr name="tabStripLeft" format="reference" />
    <!-- Drawable used to draw the right part of the strip underneath the tabs. -->
    <attr name="tabStripRight" format="reference" />
    <!-- Layout used to organize each tab's content. -->
    <attr name="tabLayout" format="reference" />
</declare-styleable>

Since you are overriding, you will also want to change:

 <item name="android:tabLayout">...

to:

 <item name="tabLayout">...