I write a theme in styles.xml file like below
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Root styles that vary by API level -->
<style name="FrameworkRoot.Theme" parent="Theme.Sherlock.Light.DarkActionBar">
<!-- API 11+ (compatibility) -->
<item name="buttonBarStyle">@style/Compat.ButtonBar</item>
<item name="buttonBarButtonStyle">@style/Compat.ButtonBarButton</item>
<item name="indeterminateProgressStyle">@style/Compat.IndeterminateProgress</item>
<!-- API 14+ (compatibility) -->
<item name="listPreferredItemPaddingLeft">@dimen/compat_list_preferred_item_padding_left</item>
<item name="listPreferredItemPaddingRight">@dimen/compat_list_preferred_item_padding_right</item>
<item name="listPreferredItemHeightSmall">@dimen/compat_list_preferred_item_height_small</item>
</style>
but get the error: Error: No resource found that matches the given name: attr 'buttonBarStyle'.
I get the code from the google io2012. Both mine and its' all base
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
I can compile the google io2012's source code but not mine. so strange. is anybody know why? or have the same question?
I had a similar problem... I have two projects in my Eclipse workspace, both based on the Android 4.2 jar. One has minSdkVersion="8" with targetSdkVersion="17" and its style references both the buttonBarStyle
and buttonBarButtonStyle
names just fine. The other project uses the same manifest settings and will not build due to the errors:
No resource found that matches the given name: attr 'buttonBarStyle'.
No resource found that matches the given name: attr 'buttonBarButtonStyle'.
When I saw @dead's
comment about needing an attrs.xml
file, I checked and sure enough, the project that wouldn't compile was missing this file. I think the working project was generated using the Eclipse Android Application Project wizard, while the other was created manually.
The contents of res/values/attrs.xml
:
<resources>
<!--
Declare custom theme attributes that allow changing which styles are
used for button bars depending on the API level.
?android:attr/buttonBarStyle is new as of API 11 so this is
necessary to support previous API levels.
-->
<declare-styleable name="ButtonBarContainerTheme">
<attr name="buttonBarStyle" format="reference" />
<attr name="buttonBarButtonStyle" format="reference" />
</declare-styleable>
</resources>
The contents of res/values/colors.xml:
<resources>
<color name="black_overlay">#66000000</color>
</resources>
And the three style files:
1) res/values/styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Light">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level
can go here. -->
</style>
<style name="ButtonBarButton" />
<style name="ButtonBar">
<item name="android:paddingLeft">2dp</item>
<item name="android:paddingTop">5dp</item>
<item name="android:paddingRight">2dp</item>
<item name="android:paddingBottom">0dp</item>
<item name="android:background">@android:drawable/bottom_bar</item>
</style>
<style name="FullscreenTheme" parent="android:Theme.NoTitleBar">
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowBackground">@null</item>
<item name="buttonBarStyle">@style/ButtonBar</item>
<item name="buttonBarButtonStyle">@style/ButtonBarButton</item>
</style>
<style name="ContentText">
<item name="android:textColor">#0000ff</item>
<item name="android:textSize">50sp</item>
<item name="android:textStyle">bold</item>
</style>
</resources>
2) res/values-v11/styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--
Base application theme for API 11+. This theme completely replaces
AppBaseTheme from res/values/styles.xml on API 11+ devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Holo.Light">
<!-- API 11 theme customizations can go here. -->
</style>
<style name="FullscreenActionBarStyle" parent="android:Widget.Holo.ActionBar">
<item name="android:background">@color/black_overlay</item>
</style>
<style name="FullscreenTheme" parent="android:Theme.Holo">
<item name="android:actionBarStyle">@style/FullscreenActionBarStyle</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="android:windowBackground">@null</item>
<item name="buttonBarStyle">?android:attr/buttonBarStyle</item>
<item name="buttonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>
</style>
</resources>
3) res/values-v14/styles.xml
<resources>
<!--
Base application theme for API 14+. This theme completely replaces
AppBaseTheme from BOTH res/values/styles.xml and
res/values-v11/styles.xml on API 14+ devices.
-->
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<!-- API 14 theme customizations can go here. -->
</style>
</resources>
buttonBarStyle
is for versions 11 and above as you state in your SDK but you are using android:minSdkVersion="8"
. Isn't it supposed to work for android:minSdkVersion="11"
?
Refer the below link. Add the values which are used in your code and delete the rest . Hope it helps you.
https://android.googlesource.com/platform/frameworks/base/+/2888524e03896831f487e5dee63f18f1c33c0115/core/res/res/values/attrs.xml
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With