2010-08-24 4 views
6

J'ai une application avec 4 onglets. Par défaut, chaque largeur de tabulation est 1/4 de la largeur de l'écran. Comment puis-je remplacer cela?Onglets de différentes tailles dans Android

J'ai besoin que les onglets aient une largeur différente pour chacun. Des idées sur la façon d'accomplir cela?

+0

je suis également pour la même, la caisse ceci: http://stackoverflow.com/questions/3446722/android-tabhost-problem-setindicator –

+0

Attend Paresh intéressant. Avez-vous essayé l'une des deux solutions proposées (Style ou TabHost redéfini)? En ce moment je regarde ce problème et je pense que l'approche la meilleure/la plus rapide est de créer nos propres onglets (avec les boutons et les écouteurs). – momo

Répondre

0

Essayez ceci:

<TabWidget android:layout_width="wrap_content" ... /> 
+0

Salut radek-k, j'utilise déjà "wrap_content" et je ne change pas d'avis. Probablement parce que j'utilise un indicateur de tabulation comme vue, pas seulement du texte. Merci quand même – momo

1

Enfin, je réussi à avoir une taille différents onglets en utilisant ToggleButton.

Mon XML est comme ce

<LinearLayout 
    android:id="@+id/tabs" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_below="@id/header" 
> 

    <ToggleButton 
    android:id="@+id/tab1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:drawableRight="@drawable/icon_home" 
    android:textOn="" 
    android:textOff="" 
    android:background="@drawable/tabselector" 
    android:paddingLeft="15dip" 
    android:paddingRight="15dip" 
    android:layout_weight="0" 
    /> 
     <ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/top_menubar_separator" /> 

<ToggleButton 
    android:id="@+id/tab2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:drawableRight="@drawable/icon_store" 
    android:textOn="Store" 
    android:textOff="Store" 
    android:background="@drawable/tabselector" 
    android:paddingLeft="15dip" 
    android:paddingRight="15dip" 
    android:layout_weight="2" 
    /> 

Où chaque ToggleButton est un onglet. Le truc ici est d'utiliser le poids pour élargir les onglets pour remplir complètement l'écran.

Le teab_selector.xml ressemble à ceci

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/top_menubar_selected" 
      android:state_pressed="true" 
      /> 
<item android:drawable="@drawable/top_menubar_selected" 
      android:state_checked="true" 
      /> 
     <item  android:drawable="@drawable/top_menubar_1px" /> 
</selector> 

Je dois encore coder la logique de non appuyer sur un bouton lorsqu'un nouveau est sélectionné et lancer une intention avec ta activité, mais semble bien jusqu'à présent .

2

Essayez ceci:

tabHost.getTabWidget().getChildAt(0).getLayoutParams().height = 35; 
+0

Cela change définitivement la hauteur de l'onglet mais votre texte va disparaître ... pls laissez-moi savoir si vous avez une solution à ce problème. –

+0

Votre texte ne disparaîtra que si la taille et la hauteur de votre texte ne sont pas proportionnelles. Essayez de réduire la taille du texte de l'onglet ou d'augmenter la hauteur de l'onglet afin que le texte soit visible. – Zeba

+0

fonctionne comme un charme – sivi

Questions connexes