2010-12-02 2 views
0

Bonjour, Je suis en train de configurer une application Android et j'utilise une interface à onglets. Je voudrais trois onglets, un onglet basé sur le texte (À propos de), un onglet Webkit (Store) et un onglet de grille d'images (Galerie) comme dans le Gridview tutorial.Comment afficher un gridview Android dans une mise en page à onglets

J'ai l'onglet texte et webkit qui fonctionne bien, mais je ne peux pas trouver la meilleure façon de formater la grille dans l'onglet. En utilisant le tabbed interface tutrial comme exemple, je déclare le contenu de l'onglet dans l'événement onCreate() de la classe principale.

public class Woodroid extends TabActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    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.setCurrentTab(0); 

     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, AboutActivity.class); 

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

     // Do the same for the other tabs 
     intent = new Intent().setClass(this, StoreActivity.class); 
     spec = tabHost.newTabSpec("store").setIndicator("Store", 
       res.getDrawable(R.drawable.ic_tab_store)) 
      .setContent(intent); 
     tabHost.addTab(spec); 


     intent = new Intent().setClass(this, GalleryActivity.class); 
     spec = tabHost.newTabSpec("gallery").setIndicator("Gallery", 
          res.getDrawable(R.drawable.ic_tab_gallery)) 
         .setContent(intent); 
     tabHost.addTab(spec); 


     tabHost.setCurrentTab(0); 
    } 
} 

Alors dans le GalleryActivity.java je donne les résultats suivants

public class GalleryActivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

      GridView gridview = new GridView(this); 
      gridview.setAdapter(new ImageAdapter(this)); 

      setContentView(gridview); 
    } 
} 

Ce qui est une interprétation du tutoriel gridview. La chose qui manque alors est la définition de disposition gridview. Il semble que je peux forcer certains des attributs comme gridview.setNumColumns(3); mais cela ne permet pas de plus souple à la recherche equivelant de la /layout/main.xml de la version gridview

android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:columnWidth="90dp" 
android:numColumns="auto_fit" 

Répondre

0

Assurez-vous d'utiliser un FrameLayout, cf tabbed example, définissez android: layout_width = "WRAP_CONTENT" au lieu de fill_parent, puis jouez avec la gravité et le poids sur chaque élément de l'objet jusqu'à ce qu'il ressemble à ce que vous voulez.

+0

Cela fait le travail d'envelopper le contenu. MERCI! Mais il y a d'autres éléments qui ne sont pas universels pour tous les onglets. Comme je définirais la taille d'image par défaut, la largeur de colonne et tel explicitement dans le java plutôt que le xml? – Lloyd

+0

Oui, pour ceux que je trouve préférable de mettre ceux en Java et pas dans le xml. –

Questions connexes