main_activity Title Bar Customizen

  • Hi,


    ich bin ganz neu bei Android und habe deshalb einige Problem die richtigen Begriffe für die Suche zu finden.


    Ich habe jetzt mit Eclipse und entsprechenden Plugins die Hello World App erstellt. Alles soweit kein Problem. Die App hat nun im Nexus-Emulator eine sehr breite schwarze Titelzeile mit dem Icon und dem Namen der App drin. Diese würde ich gerne ändern, so das sie z.b. Rot ist und der Text schwarz. Aber wie geht das? Ich habe bereits versucht das programmatisch zu machen als auch die styles.xml zu ändern. Aber das gewünschte Ergebnis habe ich nicht hinbekommen.


    Die Google Suche nach main activity Tital Bar o.ä. bringt auch keine wirklichen (für mich) brauchbaren Ergebnisse.


    Eigentlich sollte das doch gar nicht so schwer sein oder?


    Gruß


    Claus

  • Moin Claus,


    ich glaube Du suchst die android.app.ActionBar, die Du in Deiner Activity via getActionBar() bekommst.
    Zumindest hoffe ich, dass Du ein halbwegs aktuelles Android voraussetzt. ;)


    Wie sich das Ding am Einfachsten manipulieren lässt weiß ich allerdings auch nicht so aus dem Kopf.
    Es bietet zwar eine setBackgroundDrawable(Drawable), allerdings habe ich keine Idee ob sich diese Drawable einfach aus einer Farbe heraus erstellen lässt.
    (In Anlehnung an [UIImage imageWithColor:])


    Ha, grad geschaut.
    Typ android.graphics.drawable.ColorDrawable; Methode ColorDrawable(int color)


    Damit sollte zumindest der erste Teil möglich sein.


    Eventuell kannst Du über eigene Theme Extensions auch noch die Textfarbe beeinflussen, aber das übersteigt meine Erfahrung.


    Die übliche Einstiegsliteratur:
    Action Bar Design Guides
    Action Bar Design Patterns
    Action Bar Basic Training


    Gruß Marco

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

  • Mal eine rein technische Frage:
    (Wie) Implementierst Du ein Queueing, für den Fall, dass während der für die Serverkommunikation relevanten Datenänderungen aktuell keine Verbindung zu einem Datennetzwerk besteht?

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

  • Ich ging mal davon aus, dass diese App mit einem Webservice agiert.


    Wie realisierst Du das, wenn die App theoretisch die Anfrage an den Webserver senden müsste, gerade aber keine Konnektivität vorhanden ist?

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

  • Am besten bearbeitest du die Actionbar indem du eine eigene layout.xml dafür erstellst und diese dann als Layout für die Actionbar setzt.


    Java
    actionBar = getSupportActionBar();
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setDisplayShowTitleEnabled(false);
    LayoutInflater mInflater = LayoutInflater.from(this);
    View actionBarView = mInflater.inflate(R.layout.actionbar, null);
    actionBarTitle = (TextView) actionBarView.findViewById(R.id.txt_actionbar_title);
    actionBarSubTitle = (TextView) actionBarView.findViewById(R.id.txt_actionbar_subtitle);
    ActionBar.LayoutParams params = new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT);
    actionBar.setCustomView(actionBarView, params);
    actionBar.setDisplayShowCustomEnabled(true);


    wobei deine Activity in dem Fall von AppCompatActivity erben muss.

  • Danke für eure Antworten.


    Irgendwie ist meine Lust auf Android schon wieder deutlich unter 0. Wenn man nicht mal so eine einfache Änderung problemlos machen kann, dann will ich gar nicht wissen wie lange ich brauche bis ich die Tabview mit Tableview und dynamischen Zellengrößen hinbekomme.


    Gruß


    Claus

  • Naja so eine einfach Änderung wie du dir das vorstellst ist das nicht. Aber wenn du nur farben ändern willst machst du das über styles.


    XML
    <resources>
        <style name="MyTheme" parent="@android:style/Theme.Holo.Light">
            <item name="android:actionBarStyle">@style/MyActionBar</item>
        </style>
    
    
        <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
            <item name="android:background">ANY_HEX_COLOR_CODE</item>
        </style>
    </resources>

    Das müsstest du dann noch auf das Material Design anpassen.
    Mein Beispiel ist dafür, wenn du wirklich das komplette Layout der actionbar ändern möchtst, z.b. neue bilder einfügen, abstände ändern etc. etc.

  • Irgendwie kapier ich es nicht wirklich. Ich habe folgendes nun in den styles versucht



    bekomme aber einen Fehler das die Parent Resource nicht gefunden wird. Wie heißt denn der Parent richtig?


    Gruß


    Claus


    P.S. warum formatiert er mir immer meinen Code kaputt?

Jetzt mitmachen!

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