Question

Ceci est ma première application à onglets pour Android. J'ai parcouru l'application "HellotabWidget" sur le site Web d'Androids, mais je ne peux pas comprendre comment ajouter du contenu aux onglets. Le Framelayout empile des trucs les uns sur les autres en haut à gauche (d'après ce que j'ai lu). J'ai ajouté quelques textes et une vue ImageView, mais il affiche uniquement le dernier élément ajouté. Existe-t-il un moyen d'utiliser la disposition linéaire au lieu de la disposition du cadre? Sinon, comment pouvez-vous placer plusieurs vues dans l'onglet? La seule chose que j'ai faite différente de l'exemple est que j'ai ajouté un 4ème onglet. Dans l'une des activités d'onglet, j'ai inséré le code suivant pour essayer d'obtenir plusieurs éléments à afficher:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);    

        TextView textview = new TextView(this);
        textview.setText("This is the About tab");
        setContentView(textview);

        TextView textview2 = new TextView(this);
        textview2.setText("About Test");
        setContentView(textview2);

        ImageView imgView = new ImageView(this);
        imgView.setImageDrawable(getResources().getDrawable(R.drawable.header));
        setContentView(imgView);
    }

Voici le lien vers l'exemple que j'ai suivi:http://developer.android.com/resources/tutorials/views/hello-tabwidget.html

Était-ce utile?

La solution

Quel est votre fichier XML de mise en page? J'utilise ceci et je peux empiler plusieurs TextView dans chaque onglet. TabActivity:

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ScrollView android:layout_width="fill_parent" 
        android:layout_height="wrap_content" >
        <LinearLayout android:layout_width="fill_parent" 
            android:layout_height="fill_parent"
            android:orientation="vertical" >
            <TabWidget android:id="@android:id/tabs"
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content" />
            <FrameLayout android:id="@android:id/tabcontent"
                android:layout_width="fill_parent" 
                android:layout_height="fill_parent" />
        </LinearLayout>
    </ScrollView>
</TabHost>

Onglet Activité à l'intérieur:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:orientation="vertical" >
    <TextView android:id="@+id/textOne" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView android:id="@+id/textTwo" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
<LinearLayout>

Je suis moi-même un débutant, donc il pourrait y avoir une meilleure façon de le faire. Cela fonctionne pour moi, cependant.

Autres conseils

Vous n'avez pas lu avec attentivement l'exemple. Jetez un œil au point numéro 6; Vous verrez quelque chose comme:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Resources res = getResources(); // Resource object to get Drawables
    TabHost tabHost = getTabHost();  // The activity TabHost
    TabHost.TabSpec spec;  // Resusable TabSpec for each tab
    Intent intent;  // Reusable Intent for each tab

    // Create an Intent to launch an Activity for the tab (to be reused)
    intent = new Intent().setClass(this, ArtistsActivity.class);

    // Initialize a TabSpec for each tab and add it to the TabHost
    spec = tabHost.newTabSpec("artists").setIndicator("Artists",
                      res.getDrawable(R.drawable.ic_tab_artists))
                  .setContent(intent);
    tabHost.addTab(spec);

    // Do the same for the other tabs
    intent = new Intent().setClass(this, AlbumsActivity.class);
    spec = tabHost.newTabSpec("albums").setIndicator("Albums",
                      res.getDrawable(R.drawable.ic_tab_albums))
                  .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, SongsActivity.class);
    spec = tabHost.newTabSpec("songs").setIndicator("Songs",
                      res.getDrawable(R.drawable.ic_tab_songs))
                  .setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(2);
}

C'est ce que vous avez mis dans le surfait pour le TabActivity. Comme vous pouvez le voir, il a 3 activités. Ce que vous faites est d'utiliser une seule activité et de définir la vue de contenu 3 fois, ce qui est évidemment faux.

Alors ... comment le faire fonctionner? Tout d'abord, relisez le tutoriel. Deuxièmement, créez une activité pour chaque onglet que vous souhaitez afficher. Et utilisez le modèle ci-dessus pour ajouter ces activités à votre TabHost.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top