2012-02-03 13 views

risposta

0

Se si sta creando un ActionBar personalizzato, è possibile aggiungere spazi personalizzati, tra gli elementi, se si desidera spostare gli oggetti più vicini tra loro, è possibile utilizzare valori negativi per i propri attributi. Ti piace questa pseudo-codice (nel file XML di layout):

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

Ho provato questo, ma lavoro dint :( –

1

Penso che si potrebbe scoprire che questo è difficile da impossibile da compiere senza ottenere estremamente hacker o semplicemente creare il proprio ActionBar personalizzato. See here per quella che sembra una domanda abbastanza simile. Ho fatto alcuni test scavalcando android: actionButtonStyle, e mentre ero in grado di scavalcare alcune cose (come lo sfondo), ha rifiutato di onorare qualsiasi tipo di attributi di padding che ho specificato.

+1

Grazie per il collegamento Hankystyles, ho provato a eseguire l'override di android: actionButtonStyle, tuttavia non è stato in grado di modificare lo sfondo.Qui è come lo sto facendo. 'codice' ( @ style/customactionbuttonstyle ) 'codice' Poi ho provato a scavalcare Android: selectableItemBackground che funziona anche a dint. –

61

utilizzare un android personalizzato: actionButtonStyle.

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

e la magia è qui:

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

normalmente minWidth è impostato a 56 dip.

+5

Non funziona per me. – aaronsnoswell

+0

Per me neanche! :( –

+0

Non funziona per me a livello di API 11. Utilizzo dei livelli API 14+ – cprcrack

14

Grazie a Shai per il suo suggerimento, che funziona abbastanza bene per me (su un dispositivo Android 4.0.x): (tutta la mia 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

Per le versioni SDK 17 + si dovrebbe usare paddingStart e paddingEnd proprietà, se avete minSdkVersion < 17 è necessario utilizzare stili diversi per ogni versione, in questo modo:

res/valori/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/valori-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

Questo dovrebbe essere l'approccio corretto per sovrascrivere il riempimento per dispositivi 17+. Grazie. – jaxvy

+0

Ho perso più di mezza giornata per questo prima di visitare la tua risposta .. Grazie .. – Ankur

+0

Questo ha funzionato per me! Nel caso questo aiuti, ho aggiunto ' @ style/ActionButtonStyle' solo una volta all'interno del mio '