2010-10-06 6 views
0

Quelqu'un sait comment Facebook a fait:



alt textTabHost sur Facebook pour Android



D'après ce que je sais que nous ne pouvons pas changer la hauteur de tabhost. Je devine qu'ils ont posé la vue "Frank Cho" sur le tabhost pour lui donner l'apparence d'être plus court mais je peux me tromper. Quelqu'un sait ce qu'il se passe?

Répondre

3

Vous pouvez réellement avoir des widgets de tab personnalisés. Vous devez définir l'indicateur de tabulation sur une mise en page personnalisée (avec vos tirages) et vous devriez être prêt à partir.

Voici un semi-exemple:

final TabHost host = getTabHost(); 

final TextView indicator = (TextView) getLayoutInflater().inflate(
          R.layout.tab_indicator, 
          getTabWidget(), false); 
indicator.setText("Tab title"); 

host.addTab(host.newTabSpec("The tab tag") 
      .setIndicator(indicator) 
      .setContent([put your content here])); 
} 

Lorsque la mise en page de tab_indicator peut ressembler à ceci:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tab_label" 
    android:layout_width="0dip" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" 
    android:gravity="center" 
    android:textSize="14sp" 
    android:textStyle="bold" 
    android:minHeight="38dp" 
    android:background="@drawable/minitab" /> 

Le Minitab drawable est un sélecteur d'élément drawable (vous devez avoir une image pour sélectionné, par défaut, pressé et non sélectionné). L'application Facebook a utilisé une image pouvant être dessinée en blanc pour l'onglet par défaut et l'option de dessin en dégradé bleu pour les onglets non sélectionnés.

Découvrez l'application de l'annexe IO Google pour un exemple de travail complet: http://code.google.com/p/iosched/ (et plus particulièrement le TrackDetailActivity.java)

+0

J'essaierai ça ... merci – Sid

2

Quelqu'un d'autre a ce que je pense est la bonne réponse, mais supprimé pour une raison quelconque ... La hauteur en question n'est pas celle du TabHost, mais du TabWidget. Essayez d'utiliser la version de setIndicator() qui prend un View au lieu de simplement String ou String plus ressource drawable. Bien que je n'ai pas encore joué avec cela, je crois comprendre que cela résout bien ce problème.

Faites attention, toutefois, à ce que vous ne vous retrouviez pas avec des onglets trop durs à taper.

+0

Ouais c'était moi - j'avais frappé la barre d'espace et le poste a été publié un peu trop tôt. –

+0

Merci ... Mon problème maintenant est que les onglets sont énormes et prennent trop d'espace à l'écran pour ce que je veux qu'ils fassent. – Sid