2013-10-08 3 views
16

Ich habe alles versucht, was hier auf allen anderen Antworten von Stackoverflow erwähnt wird, aber es funktioniert nicht. Hier ist mein Code.Tabs oben Aktionsleiste beim Aufblasen des benutzerdefinierten Layouts

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

Sie meinen, Sie möchten, dass Ihre benutzerdefinierte Layout für Aktionsleiste benutzen? –

+0

ja das ist richtig. – Mihir

+0

Ich wette, du hast das auch versucht (http://StackOverflow.com/a/12884297/2438460)? –

Antwort

38

Die Tabs zeigen auf, wenn Sie die Startseite Artikel verbergen. Es ist ein wenig kontra intuitiv, aber es macht auch etwas Design Sinn. Sie stoßen Sie im Wesentlichen an, die Registerkarten als Titel für die Abschnitte zu verwenden und die Aktionsleiste darunter für Aktionen innerhalb dieser Abschnitte zu verwenden.

Sie brauchen setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME), um die Registerkarten wieder herunter zu bringen. Es muß wahrscheinlich ein Nicht-Null-Logo zu (Sie 1px transparent einen in -nodpi machen können, um es verschwinden zu lassen) für mich

+1

Sie sind der Mann. – Mihir

+3

Ich habe eine Reihe von Lösungen ausprobiert, das ist das erste, das funktioniert! – abc32112

+3

Ich habe ein Problem .. Ich kann das App-Symbol nicht ausblenden, das neben meiner benutzerdefinierten Ansicht meiner actionBar – vezikon

1

Bitte versuchen LayoutInflater zu verwenden, um die Ansicht dann die Ansicht auf die ActionBar aufzublasen.

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

Und von this

Verwendung RelativeLayout statt Linearlayout als Hauptbehälter. Es ist wichtig, dass android: layout_gravity = "fill_horizontal" gesetzt ist. Das sollte es tun.

+0

immer noch nicht funktioniert und ich habe alles, was Sie gesagt haben. – Mihir

+0

Danke für den Versuch. – Mihir

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

Das funktionierte.

+0

ich würde lieber die android: displayOptions in den Stilen – martyglaubitz

4

Die Verwendung der akzeptierten Lösung lässt eine linke Auffüllung auf der actionbar, die Ihre benutzerdefinierte Ansicht verkleinert.

die Lösung dieses Codes im onCreate des Activity hinzuzufügen:

 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

Danke !! Sein Funktionieren und auch hat er zusätzliche Polsterung auf dem linken ... – dhun

Verwandte Themen