2013-10-08 10 views
16

Ho provato tutto ciò che è menzionato qui su tutte le altre risposte di Stackoverflow ma non funziona. Ecco il mio codice.Schede Arrivati ​​sopra la barra delle azioni quando si gonfia il layout personalizzato

actionBar = getActionBar(); 
actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#ffffff"))); 
actionBar.setDisplayShowHomeEnabled(true); 
actionBar.setDisplayShowCustomEnabled(true); 
actionBar.setCustomView(R.layout.actionbar_layout); 
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
actionBar.setLogo(null); 
actionBar.setDisplayShowTitleEnabled(false); 
View homeIcon = findViewById(android.R.id.home); 
((View) homeIcon.getParent()).setVisibility(View.GONE); 
+0

vuoi dire che si desidera utilizzare il layout personalizzato per la barra azione? –

+0

sì è corretto. – Mihir

+0

Scommetto che hai provato anche questo (http://stackoverflow.com/a/12884297/2438460)? –

risposta

38

Le schede mostrano in alto quando si nasconde l'elemento Home. È un po 'contro-intuitivo, ma ha anche un certo senso del design. In sostanza, ti spingono a usare le schede come titoli per le sezioni e ad usare la barra delle azioni sotto di loro per le azioni all'interno di quelle sezioni.

È necessario setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME) per riabbassare le schede. Sarà probabilmente bisogno di un logo non nullo troppo (si può fare uno 1px trasparente -nodpi per farla sparire)

+1

tu sei l'uomo. – Mihir

+3

Ho provato un numero di soluzioni, questa è la prima che funziona! – abc32112

+3

Ho un problema .. Non riesco a nascondere l'icona dell'app che viene visualizzata accanto alla mia vista personalizzata del mio actionBar – vezikon

1

Si prega di provare a utilizzare LayoutInflater per gonfiare la vista quindi impostare la vista a ActionBar.

LayoutInflater inflator = (LayoutInflater) this 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View v = inflator.inflate(R.layout.layout, null); 
    actionBar.setCustomView(v); 

E da this

uso RelativeLayout anziché LinearLayout come il contenitore principale. È importante avere Android: layout_gravity = "fill_horizontal" impostato per esso. Questo dovrebbe farlo.

+0

ancora non funziona e ho fatto tutto ciò che hai detto. – Mihir

+0

Grazie per aver provato. – Mihir

2
getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME); 
     getActionBar().setDisplayUseLogoEnabled(true); 
     getActionBar().setDisplayShowCustomEnabled(true); 
     getActionBar().setCustomView(R.layout.actionbar_layout); 

Questo ha funzionato per me.

+0

Preferisco usare l'androide: displayOptions negli stili – martyglaubitz

4

L'utilizzo della soluzione accettata lascia una spaziatura di sinistra sullo actionbar, che riduce la vista personalizzata.

la soluzione è quella di aggiungere questo codice nel onCreate del Activity:

 View homeIcon = findViewById(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ? android.R.id.home : R.id.abs__home); 
     ((View) homeIcon.getParent()).setLayoutParams(new LinearLayout.LayoutParams(0, 0)); 
     ((View) homeIcon).setVisibility(View.GONE); 
+0

Grazie !! Il suo funzionamento e anche rimosso padding extra a sinistra ... – dhun

Problemi correlati