2012-02-13 12 views
7

Ho un'icona di casa personalizzata per la mia app e voglio che si allinei completamente a sinistra della barra di azione, in modo che tocchi il bordo dello schermo. È possibile, e se sì, come può essere fatto? Non vedo nulla che imposti il ​​padding o il margine per farlo allineare completamente a sinistra.Come rimuovere il margine tra l'icona dell'app e il bordo dello schermo su ActionBar?

+0

c'è un'imbottitura o un margine allegato all'icona casa ?? se è così rimuovili Btw mostraci del codice dal file xml, quindi molti qui possono aiutarti. –

+0

Non esiste un xml per questo. Appena aggiunto android: icon = "@ drawable/my_icon" al manifest e ab.setDisplayShowHomeEnabled (true); ab.setDisplayUseLogoEnabled (false); all'attività – CACuzcatlan

risposta

5

Sono finalmente riuscito a ottenere questo. È necessario utilizzare una vista della barra di azione personalizzata. In realtà è abbastanza semplice:

(questo sta usando ActionBarSherlock, dovrebbe funzionare con la dotazione della biblioteca compat anche ...)

  • prima nella tua res/valori/themes.xml, impostare la visualizzazione ActionBar opzioni per "personalizzato":

    <item name="android:displayOptions">showCustom</item> 
    
  • Quindi creare un file chiamato res/layout/actionbar_layout.xml e posto in esso qualcosa di simile:

    <ImageView 
        android:id="@+id/home_icon" 
        android:layout_alignParentLeft="true" 
        android:layout_marginLeft="5dp" 
        android:layout_marginRight="5dp" 
        android:layout_marginTop="5dp" 
        android:layout_marginBottom="5dp" 
        android:scaleType="centerCrop" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" /> 
    
    <!-- Add textviews or whatever you like here to replicate the actionbar 
        title etc. --> 
    

  • successiva, nel codice di attività aggiungere quanto segue:

    View mActionCustomView = getSherlockActivity().getLayoutInflater() 
        .inflate(R.layout.actionbar_layout, null); 
    getSherlockActivity().getSupportActionBar().setCustomView(
         mActionCustomView); 
    
    ImageView homeIcon = (ImageView)mActionCustomView 
        .findViewById(R.id.home_icon); 
    int abHeight = getSherlockActivity().getSupportActionBar() 
        .getHeight(); 
    homeIcon.setLayoutParams(new RelativeLayout.LayoutParams(
          abHeight, abHeight)); 
    

Questo è fondamentalmente esso! Fammi sapere se c'è qualcosa che ho omesso. Ci sono alcuni vantaggi di avere una vista della barra di azione personalizzabile, basta attenersi alle nozioni di base e sarà perfetto.

enter image description here

+0

Non è necessario impostare i parametri di layout homeicon, è sufficiente impostare i margini su @ + id/home_icon su 0 (anziché su 5dp come mostrato nell'esempio). – scottyab

+0

Non ho temi.xml ... –

+0

@OnuraySahin È possibile impostare la stessa opzione nel codice http://developer.android.com/reference/android/app/ActionBar.html#setDisplayShowCustomEnabled%28boolean%29 – brk3

Problemi correlati