1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Eigener Header in TabActivity

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von gurkenprinz, 17.06.2010.

  1. gurkenprinz, 17.06.2010 #1
    gurkenprinz

    gurkenprinz Threadstarter Neuer Benutzer

    Beiträge:
    22
    Erhaltene Danke:
    0
    Registriert seit:
    13.04.2010
    Hallo Leute!

    Weiß jemand wie ich einer TabActivity einen selbst erstellten Header zuweise, welcher dann idealerweise über den Tabs platziert ist. Der Header sollte aus Text und einer Hintergrundgrafik bestehen.

    Habe es bereits auf die Art probiert in der onCreate methode aber leider wird mir dann nur der normale graue AppHead Header angezeigt ohne Text.

    Code:
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.header);
    Hat jemand eine Idee wie ich das hinkriegen kann ?

    Besten Dank !
    lg gurkenprinz
     
  2. Fr4gg0r, 17.06.2010 #2
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Also ohne groß rumzubasteln kannst du der grauen Titelbar zumindest einen Text und ein Icon (Bild) zuweisen..
     
  3. gurkenprinz, 17.06.2010 #3
    gurkenprinz

    gurkenprinz Threadstarter Neuer Benutzer

    Beiträge:
    22
    Erhaltene Danke:
    0
    Registriert seit:
    13.04.2010
    Danke für die Antwort aber leider reicht das nicht. Die graue Titlebar soll kein Icon enthalten sondern komplett durch eine Grafik ersetzt werden.
     
  4. Fr4gg0r, 17.06.2010 #4
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Dann wirst du wohl die Titlebar ausblenden und stattdessen eine eigene View einblenden lassen müssen.
     
  5. gurkenprinz, 17.06.2010 #5
    gurkenprinz

    gurkenprinz Threadstarter Neuer Benutzer

    Beiträge:
    22
    Erhaltene Danke:
    0
    Registriert seit:
    13.04.2010
    schon klar ...
    und wie stelle ich das an wenn diese eigene View über den Tabs stehen soll ?

    In der TabActivity sind ja die Tabs standardmäßig ganz oben. Wenn ich eine eigene View einbinde ist diese unter den Tabs platziert.
     
  6. Fr4gg0r, 17.06.2010 #6
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Den Tabhost per xml laden, diesen in ein LinearLayout wrappen und darüber eine View packen? Also zuerst die View in das Layout hinzufügen und dann den Tabhost... oder gleich so im xml definieren.
    :confused:
     
  7. MichaelS, 17.06.2010 #7
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    wäre das leben nicht zu einfach, wenn es immer so einfach wäre? :p

    bzw: ich mag xml nicht :p ich würds im code machen ;D
     
  8. Fr4gg0r, 17.06.2010 #8
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    dann erzeug ein LinearLayout im Code, dieses nimmt zuerst dein im Code erzeugte CustomView und dand dein im Code erzeugte TabHost auf?
    Hierbei müsstest du wohl von Activity erben.. müsste aber so auch möglich sein Tabs zu erzeugen, schließlich kann ich bei einer normalen Activity auch auf Tabs per xml zugreifen.
     
  9. gurkenprinz, 18.06.2010 #9
    gurkenprinz

    gurkenprinz Threadstarter Neuer Benutzer

    Beiträge:
    22
    Erhaltene Danke:
    0
    Registriert seit:
    13.04.2010
    Hätte es jetzt mal so probiert:

    Code:
    public class Portal extends Activity 
    {
        public void onCreate(Bundle savedInstanceState) 
        {
            
            super.onCreate(savedInstanceState);
            this.setFullscreen();
            LinearLayout ll = new LinearLayout(this);
            ImageView header = new ImageView(this);
            header.setBackgroundResource(R.drawable.header);
            ll.addView(header);
            TabHost tabHost = new TabHost(this);
            ll.addView(tabHost);
            
            tabHost.addTab(tabHost.newTabSpec("Aktuell")  //--> in dieser Zeile NullpointerException :(
                    .setIndicator("Aktuell")
                    .setContent(new Intent(this,Portal_News.class)));
            tabHost.addTab(tabHost.newTabSpec("Favoriten")
                    .setIndicator("Favoriten")
                    .setContent(new Intent(this,Portal_Favoriten.class)));
            tabHost.addTab(tabHost.newTabSpec("Kanäle")
                    .setIndicator("Kanäle")
                    .setContent(new Intent(this,Portal_Kanaele.class)));
            
        }
    }
    
    Leider gibts eine NullPointerException wenn ich zum ersten mal einen Tab hinzufügen will. Und dabei ist egal ob ich von Activity oder TabActivity erbe.

    Dann hab ich es noch auf die Methode probiert:

    Code:
    public class Portal extends TabActivity 
    {
        public void onCreate(Bundle savedInstanceState) 
        {
            
            super.onCreate(savedInstanceState);
            this.setFullscreen();
            LinearLayout ll = new LinearLayout(this);
            ImageView header = new ImageView(this);
            header.setBackgroundResource(R.drawable.header);
            ll.addView(header);
            TabHost tabHost = this.getTabHost();
            ll.addView(tabHost);   //--> The specified child already has a Parent
            
            tabHost.addTab(tabHost.newTabSpec("Aktuell")
                    .setIndicator("Aktuell")
                    .setContent(new Intent(this,Portal_News.class)));
            tabHost.addTab(tabHost.newTabSpec("Favoriten")
                    .setIndicator("Favoriten")
                    .setContent(new Intent(this,Portal_Favoriten.class)));
            tabHost.addTab(tabHost.newTabSpec("Kanäle")
                    .setIndicator("Kanäle")
                    .setContent(new Intent(this,Portal_Kanaele.class)));
            
        }
        
    Hier schmeißt er mir in der gekennzeichneten Zeile eine IllegalStateException mit der angegebenen Beschreibung.
     
    Zuletzt bearbeitet: 18.06.2010

Diese Seite empfehlen