9

I've recently tried adopting a style-based approached to my android app. However, I'm stuck with this dilemma.

In my layout file I originally had this:

 <LinearLayout
         android:id="@+id/layout_event_buttons"
         style="?android:attr/buttonBarStyle"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_alignParentBottom="true"
         android:orientation="horizontal" >

         <ImageButton
             android:id="@+id/btn_create_event"
             style="?android:attr/buttonBarButtonStyle"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:contentDescription="@string/btn_save"
             android:src="@drawable/content_save"
             android:text="@string/btn_save" />
</LinearLayout>

In my styles.xml I tried doing this with no luck:

<style name="Buttons" parent="?android:attr/buttonBarButtonStyle">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
</style>

I already tried different variations of the above like:

?android:buttonBarButtonStyle

?attr:buttonBarButtonStyle

@android:attr/buttonBarButtonStyle

@android:buttonBarButtonStyle

I also tried:

<item name="style">?android:attr/buttonBarButtonStyle</item> 

to no avail.

My app won't compile because it can't find the buttonBarButtonStyle resource.

This is how I applied it. My other styles work fine if I just inherit the common themes like Holo, etc.

<ImageButton
     style="@style/Buttons"
     android:id="@+id/btn_create_event"
     android:contentDescription="@string/btn_save"
     android:src="@drawable/content_save"
     android:text="@string/btn_save" />
1
  • By the way, I have this in my manifest <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="18" /> So I don't think I'm running it out of an unsupported api level. Commented Sep 26, 2013 at 6:47

3 Answers 3

6

Found the answer to be similar to this post: How does an android:attr style work?

Turns out this style is private and you may need to copy it completely to be able to pull it off. :(

Sign up to request clarification or add additional context in comments.

1 Comment

You cannot have more than one same named custom attribute.
0

I've found that applying android:background="?android:attr/selectableItemBackground" to the button attributes removes the borders, which makes the button act like the android buttonbar (after extending the ?android:attr/buttonBarButtonStyle as you have.

This post explains it well

Comments

0

For AppCompat, you can inherit from the Parent style. For example, add this to each button.

<style name="MyBorderlessButtonBarStyle" parent="@style/Widget.AppCompat.Button.Borderless">

    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_width">0dp</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:layout_weight">1</item>

    <!--more items-->

</style>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.