2013-03-28 15 views
13

enter image description herecome aggiungere padding tra gli elementi del menu in Android?

sto avendo le voci di menu di essere gonfiati dal res/menu/menu.xml a ActionBar, come faccio ad aggiungere padding tra le voci di menu utilizzando Android?

<item 
    android:id="@+id/home" 
    android:showAsAction="always" 
    android:title="Home" 
    android:icon="@drawable/homeb"/> 
<item 
    android:id="@+id/location" 
    android:showAsAction="always" 
    android:title="Locations" 
    android:icon="@drawable/locationb"/> 
<item 
    android:id="@+id/preQualify" 
    android:showAsAction="always" 
    android:title="Pre-Qualify" 
    android:icon="@drawable/prequalityb"/> 
<item 
    android:id="@+id/products" 
    android:showAsAction="always" 
    android:title="Products" 
    android:icon="@drawable/productb"/> 

file di Java:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_store_locator, menu); 
    return true; 
} 

risposta

30

Soluzione trovata, aggiunte righe seguenti nel file styles.xml e ha funzionato !!

<style name="AppTheme" parent="AppBaseTheme"> 
    <item name="android:actionButtonStyle">@style/MyActionButtonStyle</item> 
</style> 

<style name="MyActionButtonStyle" parent="AppBaseTheme"> 
    <item name="android:minWidth">20dip</item> 
    <item name="android:padding">0dip</item> 
</style> 
+1

L'importante è "minWidth", che è 80dp per impostazione predefinita. Il che significa che anche senza imbottitura può esserci spazio. Questo era il problema nel mio caso. –

+1

Come posso usare questo stile nella mia voce di menu ?? Se condividi un codice semplice, sarà utile Grazie –

-1

Imbottitura non lo so, ma è possibile aggiungere il margine dal seguente senso:

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
lp.setMargins(left, top, right, bottom); 
yourItem.setLayoutParams(lp); 

Set i tuoi valori invece o f "left, top, right, bottom". In questo esempio aggiungo margine su un oggetto che otterresti con il suo ID.

Spero che questo aiuti.

+1

si dovrebbe essere più specifici su 'yourItem' perché 'MenuItem.setLayoutParams' non funziona! – msysmilu

8

creare xml disegnabile. come res/drawable/shape_green_rect.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <!-- Specify a semi-transparent solid green background color --> 
    <solid android:color="#5500FF66" /> 

    <!-- Specify a dark green border --> 
    <stroke 
    android:width="5dp" 
    android:color="#009933" /> 

    <!-- Specify the margins that all content inside the drawable must adhere to --> 
    <padding 
    android:left="30dp" 
    android:right="30dp" 
    android:top="30dp" 
    android:bottom="30dp" /> 
</shape> 

Aggiungi questa drawable in

android:icon="@drawable/shape_green_rect" 

In questo modo siamo in grado in grado di aggiungere imbottitura in menu.

Grazie.

+0

Grazie per la risposta !! Se aggiungo 'android: icon =" @ drawable/shape_green_rect "' dove aggiungo le mie icone nel file xml? –

Problemi correlati