2014-04-20 7 views
6

sehen das Problem hier, das graue Kästchen läßt Raum von oben und unten in der Aktionsleiste zum Spiel: small actionbar iconSatz ActionBar icon Höhe ActionBar Höhe

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> 

ich den Artikel wie folgt:

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

submit_action sieht so aus:

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

und schließlich wird der @ drawable/check angehängt.

enter image description here

eine Ahnung, wie ich die Kontrolle der ActionBar zu füllen bekommen kann?

Antwort

4

Der Grund, warum Ihr Symbol die ActionBar nicht füllt, liegt daran, wie die ActionMenuItemView das Symbol misst.

Die ActionMenuItemView ein maximum size of 32dp aufruft, wenn es sets the bounds for your icon

Also, es so Unterschied macht, wie groß Ihr Bild ist, wird das System immer die Größe ändern.

eine Idee, wie ich den Check bekommen kann, um die Actionbar zu füllen?

Sie sollten eine Aktion Layout für Ihr MenuItem, ein Häkchen-Symbol ohne Hintergrund verwenden und die Hintergrundfarbe der übergeordneten Aktion Layout ändern, wie Sie für richtig halten. Hier ein Beispiel:

Layout

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

Zugänglichkeit

Es ist wichtig, um sicherzustellen, dass Ihre MenuItem zugänglich ist. Wenn Sie lange auf ein Element in der ActionBar drücken, wird normalerweise eine kurze Toast die Inhaltsbeschreibung für Sie anzeigen, aber wenn Sie eine benutzerdefinierte MenuItem verwenden, liegt es an Ihnen, dieses Muster zu implementieren.Ein einfacher Weg, dies zu tun ist mit Roman Nurik's CheatSheet. Wenn Sie sich nicht sicher sind, wie Sie es verwenden sollen, sollten Sie sich an my answer here wenden, das beim Erstellen benutzerdefinierter MenuItem Layouts viel ausführlicher wird.

Alternativ

Wenn Sie diese Hintergrundfarbe für jeden MenuItem Sie verwenden möchten, können Sie einen benutzerdefinierten Stil erstellen und anwenden es das android:actionButtonStyle Attribut. Hier ist ein Beispiel dafür:

Ihr Stil

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

Ihr Thema

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

Ergebnisse

Example

+0

Was ist ic_action_tick in Ihrem Beispiel? – tipu

+0

@tipu Das Häkchensymbol von [androidicons] (http://www.androidicons.com/). – adneal

+0

Ich folgte Ihrem Code wortwörtlich (mit meinen Styles Änderungen oben) beginnt die Aktivität mit der Ellipse, anstatt ein Häkchen in der Aktionsleiste. – tipu

-1

Hier ist, was ich mit Icons in Android tun, um die richtige Größe zu erhalten. Sie haben ein bestehendes Projekt mit den res/drawable-Ordnern. Sie müssen das richtige Icon in den richtigen Ordner legen.

Starten Sie einen neuen Projektassistenten, und wenn Sie das Launcher-Symbol erhalten, fügen Sie das Symbol ein, das Sie in Ihrem bestehenden Projekt verwenden möchten. Beende den Assistenten. Der Assistent wird die verschiedenen Größen von Icons für Sie erstellen. Dann kopiere ich die Icons manuell von res/drawable-xdpi res/drawbare-ldpi usw. in den entsprechenden Ordner meines bestehenden Projekts. Löschen Sie das neue Projekt, das nicht mehr benötigt wird.

+0

als Ergebnis werden sie korrekt in der Aktionsleiste angezeigt? Ich habe ein riesiges Checkbox-Bild eingegeben, also sollte das Bild überdimensioniert sein, warum würde es die Aktionsleiste nicht füllen? – tipu

+0

Das Betriebssystem wird mindestens die richtigen Größen von Symbolen zur Auswahl haben. Ob es die Aktionsleiste füllt, hat mit dem tatsächlichen Icon und seinem leeren Platz zu tun. Ein guter Anfang ist, die Icons von developer.andoroid.com herunter zu laden. Sie haben bereits die richtige Größe und die richtigen Ordner, wenn Sie die Datei entpacken. – danny117

Verwandte Themen