2012-10-21 4 views
24

Ich möchte einige randlose ImageButtons anpassen. Um zu vermeiden, Code-Duplizierung, verwende ich styles.xml:styles.xml erben "? Android: attr/borderlessButtonStyle"?

<style name="EditNotesButton" parent="?android:attr/borderlessButtonStyle"> 
    <item name="android:layout_width">25dp</item> 
    <item name="android:layout_height">25dp</item> 
    <item name="android:scaleType">fitCenter</item> 
</style> 

jedoch der folgende Fehler ausgelöst:

Error retrieving parent for item: No resource found that matches the given name '?android:attr/borderlessButtonStyle'. 

Gibt es eine Möglichkeit borderlessButtonStyle zu erben?

Antwort

-4

borderlessButtonStyle nur auf API-Ebene 11 oder höher verfügbar.

+9

Noch funktioniert nicht auf höheren APIs, diese Antwort scheint falsch zu sein – Sergii

+1

Alege Antwort funktioniert, s o diese Antwort ist nicht die richtige und gibt nur zusätzliche Informationen. – Seynorth

+2

Bitte akzeptieren Sie http://StackOverflow.com/a/30965291/883738 –

1

Ich denke, dass Sie auf diese Weise nicht erben können. Versuchen Sie dies:

<style name="EditNotesButton" parent="@android:style/Widget"> 
    <!-- This will cause borderless button --> 
    <item name="android:background">@android:drawable/list_selector_background</item> 
    ... 
</style> 
36

Sie können ein Attribut nicht erben, müssen Sie einen Stil erben.

Wählen Sie einen borderless Stil, der Ihrem Thema entspricht, um zu erben. Alle internen Android-Stile finden Sie unter http://developer.android.com/reference/android/R.style.html

Zum Beispiel verwendet Ihre Anwendung Holo Light Thema (in AndroidManifest.xml angeben), dann sollten Sie Widget.Holo.Light.Button.Borderless.Small Stil erben.

<style name="EditNotesButton" parent="@android:style/Widget.Holo.Light.Button.Borderless.Small"> 
    <item name="android:layout_width">25dp</item> 
    <item name="android:layout_height">25dp</item> 
    <item name="android:scaleType">fitCenter</item> 
</style> 
6

Sie können diesen Stil verwenden, anstatt für API 11 und höher:

<style name="EditNotesButton" parent="android:Widget.Holo.Button.Borderless" /> 
50

Für AppCompat, können Sie von der übergeordneten Stil erben:

<style name="MyBordelessButtonStyle" parent="@style/Widget.AppCompat.Button.Borderless"> 
     <item name="android:textSize">@dimen/<your size></item> 
     <!-- other items here --> 
</style> 

Basierend auf dem source code

+3

Dies sollte die akzeptierte Antwort sein, aufgrund der Verwendung der neuesten AppCompat –