2014-04-20 13 views
6

vedere il problema qui, la casella di controllo grigia lascia spazio dalla parte superiore e inferiore della barra delle operazioni: small actionbar iconset altezza ActionBar icona per abbinare ActionBar altezza

styles.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
<style name="CustomActionBarTheme" parent="Theme.Base.AppCompat.Light"> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:actionButtonStyle">@style/ActionButtonStyle</item> 
</style> 

<!--<style name="ActionButtonStyle" parent="@android:style/Widget.Holo.Light.ActionButton">--> 
<style name="ActionButtonStyle" > 
    <item name="android:height">@dimen/abc_action_bar_default_height</item> 
    <item name="android:layout_height">@dimen/abc_action_bar_default_height</item> 
</style> 

ho impostato la voce in questo modo:

getMenuInflater().inflate(R.menu.submit_action, menu); 

appare come:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item android:id="@+id/action_submit" 
     android:icon="@drawable/check" 
     app:showAsAction="always" /> 
</menu> 

e infine, in allegato è il @ drawable/check in uso.

enter image description here

idea di come posso ottenere l'assegno per riempire l'ActionBar?

risposta

4

Il motivo per cui l'icona non riempie lo ActionBar è dovuto a come l'ActionMenuItemView misura l'icona.

Il ActionMenuItemView richiama un maximum size of 32dp quando sets the bounds for your icon

Quindi, fa così differenza quanto è grande l'immagine è, il sistema sarà sempre ridimensionarla.

qualche idea su come posso ottenere il controllo per riempire la barra di azione?

si dovrebbe utilizzare un layout azione per la tua MenuItem, un segno di spunta senza sfondo, e cambiare il colore del genitore layout di azione background, come si vede in forma. Ecco un esempio:

disposizione

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    style="?android:attr/actionButtonStyle" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#e8e8e8" 
    android:clickable="true" 
    android:contentDescription="@string/cd" > 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:contentDescription="@null" 
     android:scaleType="centerInside" 
     android:src="@drawable/ic_action_tick" /> 

</RelativeLayout> 

MenuItem

<item 
    android:id="@+id/action_submit" 
    android:actionLayout="@layout/your_action_layout" 
    android:showAsAction="always"/> 

Accessibilità

E 'importante assicurarsi che il proprio MenuItem è accessibile. Normalmente quando si preme a lungo un articolo nel ActionBar un breve Toast verrà visualizzata la descrizione del contenuto per voi, ma quando si utilizza un MenuItem personalizzato spetta a voi per implementare questo modello.Un modo semplice per farlo è utilizzando Roman Nurik's CheatSheet. Se non sei sicuro di come utilizzarlo, ti consigliamo di fare riferimento a my answer here per maggiori dettagli sulla creazione di layout personalizzati MenuItem.

alternativa

Se si desidera utilizzare il colore di sfondo per ogni MenuItem che hai, è possibile creare uno stile personalizzato e applicarlo utilizzando l'attributo android:actionButtonStyle. Ecco un esempio di che:

Il tuo stile

<style name="Your.ActionButton" parent="@android:style/Widget.Holo.Light.ActionButton"> 
    <item name="android:background">#e8e8e8</item> 
</style> 

il tema

<style name="Your.Theme" parent="@android:style/Theme.Holo.Light"> 
    <item name="android:actionButtonStyle">@style/Your.ActionButton</item> 
</style> 

Risultati

Example

+0

cosa è ic_action_tick nel tuo esempio? – tipu

+0

@tipu L'icona del segno di spunta da [androidicons] (http://www.androidicons.com/). – adneal

+0

Ho seguito il vostro codice letteralmente (con i miei stili cambia sopra) l'attività inizia con i puntini di sospensione, piuttosto che un controllo nella barra di azione. – tipu

-1

Ecco cosa faccio con le icone in Android per ottenere il dimensionamento corretto. Hai un progetto esistente con le cartelle res/drawable. Devi mettere l'icona corretta nella cartella corretta.

Avviare una nuova procedura guidata di progetto e quando si arriva all'icona di avvio, inserire l'icona che si desidera utilizzare nel progetto esistente. finire il mago. Il mago farà le varie dimensioni di icone per te. Quindi copio manualmente le icone dal res/drawable-xdpi res/drawable-ldpi ecc nella cartella corrispondente sul mio progetto esistente. Elimina il nuovo progetto non è più necessario.

+0

di conseguenza appariranno correttamente nella barra delle azioni? sono entrato in una massiccia immagine di checkbox, quindi l'immagine dovrebbe essere sovradimensionata, perché non riempire la barra delle azioni? – tipu

+0

Il sistema operativo avrà almeno le dimensioni corrette delle icone tra cui scegliere. Se riempie la barra delle azioni ha a che fare con l'icona reale ed è lo spazio vuoto. Un buon punto di partenza è scaricare le icone da developer.andoroid.com. Sono già dimensionati correttamente e sono le cartelle corrette quando si decomprime il file. – danny117

Problemi correlati