2012-02-03 7 views

Odpowiedz

0

Jeśli tworzysz niestandardowy pasek akcji, możesz dodać niestandardowe odstępy między elementami, jeśli chcesz przenieść elementy bliżej siebie, możesz użyć ujemnych wartości dla swoich atrybutów. Jak ten pseudo-kod (w pliku xml układu):

<ImageView 
android:layout_marginLeft="-2dp" 
+0

Próbowałem tego, ale praca dint :( –

1

myślę, że może się okazać, że jest to trudne do osiągnięcia bez niemożliwe uzyskanie niezwykle hackish lub po prostu tworząc swój własny ActionBar. See here za to, co wydaje się dość podobne pytanie. Zrobiłem kilka testów samodzielnie nadpisując android: actionButtonStyle, i podczas gdy byłem w stanie przesłonić pewne rzeczy (takie jak tło), odmówił on honorowania jakiegokolwiek rodzaju atrybutów dopełnienia, które określiłem.

+1

Dzięki za link Hankystyles, starałem się przesłonić android: actionButtonStyle, jednak nie był w stanie zmienić tła też. Oto jak ja to robię. "kod" ( @ style/customactionbuttonstyle ) "kod" Potem próbowałem przesłonięcie android: selectableItemBackground, który również działa. –

61

użyć niestandardowego androida: actionButtonStyle.

<item name="android:actionButtonStyle">@style/ActionButtonStyle</item> 

a magia jest tutaj:

<style name="ActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton"> 
    <item name="android:minWidth">0dip</item> 
    <item name="android:paddingLeft">0dip</item> 
    <item name="android:paddingRight">0dip</item>     
</style> 

normalnie MinWidth jest ustawiony na 56 dip.

+5

Nie działa dla mnie. – aaronsnoswell

+0

Dla mnie też! :( –

+0

Nie działa dla mnie na poziomie API 11. Praca na poziomach API 14+. – cprcrack

14

Dzięki Shai dla jego wskazówka, że ​​działa całkiem dobrze dla mnie (na urządzeniu z systemem Android 4.0.x): (mój cały style.xml)

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

<!-- 
    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. --> 
    <item name="android:actionButtonStyle">@style/ActionButtonStyle</item> 
</style> 

<style name="ActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton"> 
    <item name="android:minWidth">0dip</item> 
    <item name="android:paddingLeft">0dip</item> 
    <item name="android:paddingRight">0dip</item> 
</style> 

13

Dla wersji SDK 17 + należy użyć właściwości paddingStart i paddingEnd, jeśli masz minSdkVersion < 17 trzeba użyć różnych stylów dla każdej wersji, jak to:

res/wartości/styles.xml:

<item name="android:actionButtonStyle">@style/ActionButtonStyle</item> 

<style name="ActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton"> 
    <item name="android:minWidth">0dip</item> 
    <item name="android:paddingLeft">0dip</item> 
    <item name="android:paddingRight">0dip</item>     
</style> 

res/wartości-V17/styles.xml:

<item name="android:actionButtonStyle">@style/ActionButtonStyle</item> 

<style name="ActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton"> 
    <item name="android:minWidth">0dip</item> 
    <item name="android:paddingStart">0dip</item> 
    <item name="android:paddingEnd">0dip</item>     
</style> 
+1

To powinno być prawidłowe podejście do nadpisywania wypełnienia dla ponad 17 urządzeń. Dzięki. – jaxvy

+0

Zmarnował ponad pół dnia, zanim odwiedzisz odpowiedź .. Dzięki .. – Ankur

+0

Ten działał dla mnie! Jeśli to pomoże, dodałem ' @ style/ActionButtonStyle' tylko raz w moim '