1. gurkenprinz, 17.06.2010 #1
    gurkenprinz

    gurkenprinz Threadstarter Neuer Benutzer

    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)

    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

    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)

    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

    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)

    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

    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)

    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

    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