2011-09-30 3 views
2

Ok, je sais que cela ne peut pas être difficile, mais j'ai beaucoup de temps avec ça .. Je suis un programmeur Java chevronné, mais très nouveau sur Android (ok, donc je Je travaille encore sur ma première application de test ...)Android LinearLayout et les images

Je voudrais avoir 3 images sur l'écran, une image "principale" qui occupe, par exemple, les 75% de l'écran, puis deux des images plus petites disposées horizontalement en dessous. (Pensez à une galerie, avec l'image principale (actuelle) affichée, une icône d'image «précédente» en dessous à gauche, et une icône d'image «suivante» en dessous de la principale sur la droite).

Je n'ai pas de grandes et petites images, elles sont toutes grandes et je veux qu'elles soient affichées à l'échelle. Le problème est que peu importe ce que je fais, l'image "principale" prend trop de place, de sorte que le plus souvent, les images sur le fond ne sont pas visibles du tout.

Je me rends compte que je peux définir la hauteur de l'image principale à un certain nombre de creux et cela a fonctionné, mais si mon application va à un périphérique avec une densité différente, il va sembler loufoque. J'ai essayé de jouer avec android: layout_weight, mais sans chance. Je pensais que si je mettais les layout_weights à égalité, cela ferait en sorte que les vues prennent la même proportion, mais l'image "principale" domine toujours et fait que les petites images sont coupées en bas ou complètement hors de l'écran. Je réalise également que je pourrais probablement utiliser d'autres mises en page, mais il semble si simple d'avoir juste la disposition racine d'un LinearLayout vertical qui se compose d'une image et d'un LinearLayout horizontal qui se compose de 2 images. Quelque chose comme ceci:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

    <ImageView 
    android:id="@+id/cbPicView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:src="@drawable/cb1" 
    android:layout_weight="1" 
    /> 

    <LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    > 

    <ImageView 
     android:id="@+id/cbPrevPicView" 
     android:layout_width="50dip" 
     android:layout_height="50dip" 
     android:src="@drawable/cb4" 
     android:layout_weight="1" 
    /> 

    <ImageView 
     android:id="@+id/cbNextPicView" 
     android:layout_width="50dip" 
     android:layout_height="50dip" 
     android:src="@drawable/cb2" 
     android:layout_weight="1" 
    /> 
    </LinearLayout> 
</LinearLayout> 

Désolé pour la longueur - en essayant de fournir autant de détails que je peux. Merci!

+1

essayez de régler les hauteurs à 0dip mais garder le paramètre layout_weight –

+0

essayé d'installer d'abord ImageView (principal) à 0dip avec le poids 1 , et deuxième LinearLayout à 0dip avec le poids 1. Maintenant tout ce que je reçois est un écran vide quand je l'exécute? – daroo

+0

Oups - ma faute - J'ai mis à la fois la largeur et la hauteur à 0dip, pas étonnant qu'ils n'étaient pas là .. Votre suggestion fonctionne! Merci beaucoup - pouvez-vous expliquer pourquoi cela fonctionne? – daroo

Répondre

5

Cela fera quelque chose comme:

------- 

    1 

------- 
2 | 3 
------- 

Mise en page:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

    <ImageView 
    android:id="@+id/cbPicView" 
    android:layout_width="wrap_content" 
    android:layout_height="0dp" 
    android:layout_gravity="center_horizontal" 
    android:src="@drawable/cb1" 
    android:layout_weight="3" 
    /> 

    <LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="1" 
    > 

    <ImageView 
     android:id="@+id/cbPrevPicView" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:src="@drawable/cb4" 
     android:layout_weight="1" 
    /> 

    <ImageView 
     android:id="@+id/cbNextPicView" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:src="@drawable/cb2" 
     android:layout_weight="1" 
    /> 
    </LinearLayout> 
</LinearLayout>