2012-06-09 12 views
8

Estoy intentando hacer una aplicación de pestañas simple en Android con dos pestañas. Mi problema es que cuando coloco este código, en la pestaña solo se muestra el texto, pero no los íconos. Si pongo el texto en "", se muestra el ícono.Ícono de la pestaña que no muestra

¿Alguien podría ayudarme? Mi versión de Android es 4.0.3.

Muchas gracias.

<?xml version="1.0" encoding="utf-8"?> 

<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/tabhost" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 
<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TabWidget android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@android:id/tabs" /> 

    <FrameLayout android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@android:id/tabcontent" > 

     <LinearLayout android:id="@+id/tab1" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 
      <TextView android:id="@+id/textView1" 
       android:text="Contenido Tab 1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 
    </LinearLayout> 

     <LinearLayout android:id="@+id/tab2" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" > 
      <TextView android:id="@+id/textView2" 
       android:text="Contenido Tab 2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 
    </LinearLayout> 

    </FrameLayout> 
</LinearLayout> 
</TabHost> 

y el código de actividad es

public class TabTestActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Resources res = getResources(); 

    TabHost tabs=(TabHost)findViewById(R.id.tabhost); 
    tabs.setup(); 

    TabHost.TabSpec spec=tabs.newTabSpec("mitab1"); 
    spec.setContent(R.id.tab1); 
    spec.setIndicator("sss", 
      res.getDrawable(android.R.drawable.ic_btn_speak_now)); 
    tabs.addTab(spec); 

    spec=tabs.newTabSpec("mitab2"); 
    spec.setContent(R.id.tab2); 
    spec.setIndicator("TAB2", 
      res.getDrawable(android.R.drawable.ic_dialog_map)); 
    tabs.addTab(spec); 



    tabs.setCurrentTab(0); 
} 

como se puede ver es muy simple. Pero cuando escribo spec.setIndicator("", res.getDrawable(android.R.drawable.ic_dialog_map)); puedo ver el icono, bu cuando escribo spec.setIndicator("TAB2", res.getDrawable(android.R.drawable.ic_dialog_map)); Solo puedo ver TAB2, pero no ambos.

Parece que no hay espacio en blanco para mostrar ambos. Así que he tratado de aumentar la altura de las pestañas con este

tabs.getTabWidget().getChildAt(1).getLayoutParams().height = 150; 

pero parece que no funciona.

Respuesta

4

// su están sobre la carga de la primera uno para que pueda ver sólo el último añade una

TabHost.TabSpec spec=tabs.newTabSpec("mitab1"); 

     spec.setIndicator("sss", 
       res.getDrawable(android.R.drawable.ic_btn_speak_now)); 
Intent sssIntent = new Intent(this, First.class); 
spec.setContent(sssIntent); 
     tabs.addTab(spec); 

TabHost.TabSpec spec2=tabs.newTabSpec("mitab2"); 
     spec2=tabs.newTabSpec("mitab2"); 
     spec2.setIndicator("TAB2", 
       res.getDrawable(android.R.drawable.ic_dialog_map)); 
Intent sssIntent2 = new Intent(this, Second.class); 
spec2.setContent(sssIntent2); 
     tabs.addTab(spec2); 
+0

¿Podría explicar un poco más? No entiendo cuando dices sobrecarga? muchas gracias – theholy

+0

Esto no funciona para mí –

8

He sustituido el nombre de la etiqueta con el valor nulo. Ahora puedo ver el icono solo .. No se pudo encontrar ninguna otra solución.

TabHost.TabSpec spec=tabs.newTabSpec("mitab1"); 

spec.setIndicator("", 
        res.getDrawable(android.R.drawable.ic_btn_speak_now)); 
Intent sssIntent = new Intent(this, First.class); 
spec.setContent(sssIntent); 
tabs.addTab(spec); 
+0

U r derecho .. tenemos que borrar la etiqueta de la pestaña para ver el ícono .. eso mierda ... Por cierto Gracias por tu ayuda amigo – Noman

+0

si lugar nulo estoy puedo ver ... pero no puedo ver el texto del icono a continuación ... puedo decir que quiero mostrar tanto el icono como el texto ... –

2

La visibilidad del icono (junto con la etiqueta) de la pestaña dependen del dispositivo de destino y la versión de la plataforma androide.

Eché un vistazo más profundo a este problema y agregué más detalles y una solución a su otra pregunta (bastante similar) sobre este problema; Se puede encontrar aquí:

https://stackoverflow.com/a/11379708/414581

0

La adición de este en AndroidManifest.xml resolvió el problema.

<application 
android:icon="@drawable/ic_launcher" 
android:label="@string/app_name" 
android:theme="@android:style/Theme.NoTitleBar"> 
</application> 
Cuestiones relacionadas