2012-06-09 23 views
8

Sto provando a fare una semplice app di tabulazione in Android con due schede. Il mio problema è che quando inserisco questo codice, nella scheda, viene mostrato solo il testo, ma non le icone. Se metto il testo su "" viene mostrata l'icona.L'icona della scheda non mostra

Qualcuno potrebbe aiutarmi? La mia versione di Android è 4.0.3.

Grazie mille.

<?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> 

e il codice attività è

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); 
} 

come potete vedere è molto semplice. Ma quando scrivo spec.setIndicator("", res.getDrawable(android.R.drawable.ic_dialog_map)); posso vedere l'icona, bu quando scrivo spec.setIndicator("TAB2", res.getDrawable(android.R.drawable.ic_dialog_map)); Posso solo vedere TAB2, ma non entrambi.

Sembra che non ci sia spazio per enucleare mostrare entrambi. Così ho cercato di ottenere aumentare l'altezza scheda con questo

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

ma non sembra funzionare.

risposta

4

// Voi sopra il caricamento del primo uno così è possibile vedere solo l'ultima aggiunta 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

potresti spiegarci un po 'di più? Non capisco quando dici sovraccarico? grazie mille – theholy

+0

Questo non funziona per me –

8

ho sostituito il nome dell'etichetta con valore nullo. Ora vedo solo l'icona .. Impossibile trovare un'altra soluzione.

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 giusto .. dobbiamo cancellare l'etichetta di tab per vedere l'icona..thats shit ... A proposito Grazie per il tuo aiuto amico – Noman

+0

se place null sono in grado di vedere ... ma non riesco a vedere il testo dell'icona qui sotto ... posso dire che voglio sia l'icona che il testo da visualizzare ... –

2

La visibilità dell'icona (insieme all'etichetta) nella scheda dipende dal dispositivo di destinazione e dalla versione della piattaforma Android.

Ho esaminato più approfonditamente questo problema e aggiunto ulteriori dettagli e una soluzione all'altra (abbastanza simile) domanda su questo problema; Si può trovare qui:

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

0

Aggiungendo questo AndroidManifest.xml risolto il problema.

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