2012-08-05 19 views
5

Ich möchte Tab Widget anpassen, indem ich den Stil durch meinen eigenen Stil ersetze. Der Artikel, den ich ersetzen werde ist wie folgt:Es wurde keine Ressource gefunden, die mit dem angegebenen Namen übereinstimmt: attr 'android: tabLayout'

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

Aber ich habe diesen Fehler: Keine Ressource gefunden, die den angegebenen Namen übereinstimmt: attr ‚android: tabLayout‘

Ich habe die Eltern gesetzt Stil wie folgt aus:

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

das Projekt Build-Ziel: Android 4.0

ich habe auch das Projekt gereinigt, aber die Fehler wird immer noch ausgeführt. Wie behebt man den Fehler?

Vielen Dank im Voraus.

+1

'tabLayout' ist eine nichtöffentliche derzeit Attribut. Hier ist der Fehler, der dies verfolgt: https://code.google.com/p/android/issues/detail?id=65832 Wenn Sie TabWidget auf diese Weise anpassen möchten, müssen Sie möglicherweise programmgesteuert mit [TabSpec.setIndicator] (http : //developer.android.com/reference/android/widget/TabHost.TabSpec.html#setIndicator (android.view.View)). – Klaus

Antwort

2

Ich stieß auf ein ähnliches Problem. Zumindest ein Teil der Lösung besteht darin, das Attribut tabLayout zu res/values ​​/ attrs.xml hinzuzufügen. Hier ist die Definition des TabWidget Designs, kopierte aus der Android-16-Plattform (man beachte das tabLayout Attribut am Ende):

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

Da Sie überschreiben, werden Sie auch ändern wollen:

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

zu:

<item name="tabLayout">... 
+0

diese Lösung scheint mir nicht zu helfen. Was ich sonst noch tun sollte, wurde in dieser Antwort nicht erwähnt? –

+0

Ich habe diese Antwort schon eine ganze Weile zurück geschrieben. Wenn ich es jetzt betrachte, fällt mir nichts ein. Es tut uns leid! –

+0

Es ist keine Lösung. Es ist nur erlaubt, kompilieren Sie Code. nichts mehr. Android wird keine benutzerdefinierten Attribute verwenden, weil ich nichts davon weiß. – Enyby