Actionbar Theme ändern

  • Nabend an alle,


    ich wollte mal versuchen, die Actionbar einer App zu verändern, also sprich button einfügen und hintergrundfarbe zu verändern.


    Am ende soll es so aussehen:




    Wenn man ein neues android-projekt erstellt, kann man ja aussuchen, ob man eine blanke activity oder mit navigation (fixed/scrollable tabs) haben möchte. ich habe fixed tab ausgewählt. dann bräuchte man nur noch oben die actionbartheme leiste zu ändern.


    habe dafür eine layout dementsprechend konstruiert:
    title_bar.xml


    habe mich nach diesem tutorial gehalten: http://www.youtube.com/watch?v=sRZdP9n9ieM
    das heißt, ich hab wie im wiedeo die xml datein erstellt, die anifest angepasst etc. bekam aber ein nullpointerexception.


    Die Mainactivity wurde ja automatisch generiert. hab da nichts geändert.


    Zeile 34 ist actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);


    Ich weiß nicht, ob man das so einfach übernehmen kann ( hab keine ahnung wie ich vorgehen muss). Im video war es ja schließlich eine blank activity. Habe schon paar tutorials mir angesehen, aber die enthielten nicht das ergebnis, was ich mir wünsche bzw. waren einige unvollständig. hier sind die tutorials, die mich ziemlich verwirrt haben


    http://blog.alwold.com/2013/08…n-the-android-action-bar/
    http://www.androidhive.info/20…-working-with-action-bar/
    https://developer.android.com/…cs/actionbar/styling.html



  • Zeile 34 ist actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);


    In dem Fall gibt es nur zwei Möglichkeiten:
    actionBar ist null, weil getActionBar null zurück gibt. Das solltest Du als allererstes überprüfen.
    ActionBar ist null, weil Du auch Version 2.x unterstützt. Da gibt es das gar nicht.


    Ich vermute eine Kombination aus Beidem. Da Du FragmentActivity nutzt, ist davon auszugehen, dass Du die SupportLibrary v4 nutzt und damit auch 2.x unterstützt werden soll.
    FragmentActivity gehört zur SupportLibrary V4, seit API 10 kann die normale Activity das schon.


    Nimm statt der SupportLibrary V4 die V7 und leite von der ActionBarActivity ab. (Die ist von der FragmentActivity abgeleitet.)
    Dort nutzt Du dann statt getActionBar() die getSupportActionBar() und alles sollte laufen wie geplant.
    http://developer.android.com/r…pp/ActionBarActivity.html

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Hallo Marco,


    danke dir für deine tipps. Also ich hab gerade versucht was du mir vorgeschlagen hast. die library die ich brauch ist ja android.support.v7.app.ActionBar. Im <sdk>/extras/android/support/v7 sind folgende ordner: appcompat, gridlayout und mediarouter enthalten. ich hab die appcompat importiert und in meinem projekt diese in die library hinzugefügt. bekomme jedoch nun einen roten ausrufezeichen am projektordner. bin ich denn richtig vorgegangen? ?(

  • Kommt drauf an.
    Wenn Du sowieso erst Android 4+ unterstützen möchtest (davon gehe ich mal im Template aus), kannst Du Dir den Support-Quatsch sparen und einfach eine normale Activity nehmen. So kommst Du dann etwas schneller zu einem Ziel.


    Ansonsten ist das Importieren der appcompat als Library und das Hinzufügen die richtige Vorgehensweise.
    Du musst das AppCompat als 'Library' kennzeichnen und dein Projekt davon abhängig machen. Wie das in Android Studio geht weiß ich gerade nicht.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • So, habe es nun hinbekommen in einen fragmentactivty eine custom actionobar zu machen ;)


    die mainactivity wurde folgendermaßen verändert (zeile 17):



    im res-ordner die menu-main.xml datei:



    in im manifest die zeile mit android:theme in android:theme="@style/Theme.AppCompat.Light" > ändern. Die v7 library natürlich am anfang in das projekt mit hinzufügen.
    hier das tutorial: http://hmkcode.com/add-actionbar-to-android-2-3-x/


    danke an marco feltmann ;)

  • Hallo nochmal,


    wie sieht das denn aus wenn man mehrere items in
    der actionbar hat und einige davon sollen über einen overflow button zu
    sehen sein. ich bin schon seit gestern dran, einen overflow button im
    actionbar hinzubekommen, jedoch erfolgslos. ist das denn mit dem
    appcompat möglich!??


    bei mir werden jeweils zwei items (per image) in der actionbar leiste
    angezeigt und die restlichen bekomme ich nur zu sehen, wenn man auf den
    hardwarebutton menü klickt. die werden dann halt wie gewohnt unten übereinander aufgelistet.


    mein menü.xml sieht folgendermaßen aus:


    oder muss man speziell ein popup item erstellen?

  • Das liegt dann wohl daran, dass Du einen Hardwarebutton Menü hast. ;)
    Dieses Overflow Dingens wird nur angezeigt, wenn dieser Button nicht existiert.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!