2010-03-13 5 views
0

Juste une question rapide sur la façon dont vous allez mettre en œuvre cela. Je veux qu'il y ait des boutons en bas de l'écran, mais si la taille de l'écran est plus grande, plus de boutons seraient ajoutés. Par exemple, à une taille d'écran réduite, il peut y avoir 4 ou 5 boutons en bas, mais si vous l'avez exécuté sur une tablette ou quelque chose de similaire, il y aura peut-être 20 boutons.Android - Mise en page de remplissage avec des boutons

Des suggestions? Il ne peut pas non plus défiler, il suffit de remplir dynamiquement la mise en page avec des boutons.

Merci.

Répondre

3

Pour mettre les boutons en bas d'une mise en page, faire quelque chose comme ceci à votre disposition:

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

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/main_layout"> 
    <LinearLayout 
     android:layout_height="wrap_content" 
     android:id="@+id/button_layout" 
     android:layout_alignParentBottom="true" 
     android:layout_width="fill_parent" 
     android:gravity="center"> 
     <Button 
      android:id="@+id/Button01" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Button 1"></Button> 
     <Button 
      android:id="@+id/Button02" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Button 2"></Button> 
     <Button 
      android:id="@+id/Button03" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Button 3"></Button> 
    </LinearLayout> 
    <FrameLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_above="@+id/button_layout" 
     android:id="@+id/content"> 
     <ListView 
      android:id="@+id/ListView01" 
      android:layout_height="fill_parent" 
      android:layout_width="fill_parent"></ListView> 
    </FrameLayout> 
</RelativeLayout> 

Pour modifier le nombre de boutons sont représentés en fonction de la taille de l'écran, vous devez layouts séparés pour plusieurs écrans tailles ..

http://developer.android.com/guide/practices/screens_support.html

+0

La position n'est pas mon problème. Et je ne veux pas avoir à définir une mise en page différente pour chaque taille d'écran béni. Avec l'énorme quantité de dispositifs sur le marché, il n'y a aucun moyen de le tenir à jour. – GuyNoir

+0

Il existe seulement 3 tailles d'écran prises en charge: 240x320, 320x480 et 480x800. Ce n'est pas si difficile de supporter les trois correctement :) –

+0

Vraiment? Je ne le savais pas. Sont tous les comprimés 480x800? Et qu'en est-il des builds personnalisés pour des périphériques spécifiques? – GuyNoir

0

on dirait que vous voulez créer votre propre classe de mise en page personnalisée. Cela ou simplement remplir un LinearLayout (par exemple) jusqu'à ce que vous manquez d'espace sur l'écran.

+0

Y at-il un moyen de savoir quand je manque d'espace de l'écran dynamiquement? – GuyNoir

0

Si vous connaissez la taille de vos boutons en pixels, vous pouvez utiliser DisplayMetrics pour obtenir les dimensions de l'écran, puis calculer le nombre de boutons qui correspondent à votre espace alloué.

 DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 

metrics.heightPixels GIVS hauteur absolue en pixels metrics.ydpi donne pixels physiques exactes par pouce de l'écran

et metrics.density donne la densité logique à des fins d'échelle

voir ici: http://developer.android.com/reference/android/util/DisplayMetrics.html

puis juste faire quelque chose comme

do{ 
    Button button=new Button(context); 
    button.setText("yada yada") 
    button.allYoursettings.... 
    . 
    . 
    LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    LinearLayout layout=(LinearLayout) findViewById(R.id.yourlayout); 
    layout.addView(button,p); 
} while(havespaceleft);