Volevo ridurre la spaziatura tra le icone dell'elemento azione aggiunte all'AzioneBar. C'è un modo per farlo?C'è un modo per ridurre la spaziatura tra le icone delle voci di azione sulla barra delle azioni?
risposta
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"
Ho provato questo, ma lavoro dint :( –
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.
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' (
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.
Non funziona per me. – aaronsnoswell
Per me neanche! :( –
Non funziona per me a livello di API 11. Utilizzo dei livelli API 14+ – cprcrack
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>
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>
Questo dovrebbe essere l'approccio corretto per sovrascrivere il riempimento per dispositivi 17+. Grazie. – jaxvy
Ho perso più di mezza giornata per questo prima di visitare la tua risposta .. Grazie .. – Ankur
Questo ha funzionato per me! Nel caso questo aiuti, ho aggiunto '
La risposta in alto mi sembra abbastanza buona - c'è una ragione per cui non è stata accettata? – andygeers