IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

TableLayout et largeur


Sujet :

Android

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 93
    Par défaut TableLayout et largeur
    Bonjour à tous,

    J'utilise un table layout contenant des boutons dont je spécifie la taille. Je veux que mes 2 colonnes prennent toute la largeur du mobile (android:stretchcolumns="0, 1"). Cependant, les boutons sont aussi élargis alors qu'ils ont une taille fixe !

    Voici ce que je fais (1 ligne, 2 colonnes)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <TableLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:stretchcolumns="0, 1">
      <TableRow>
        <ImageButton android:src="@drawable/monimage" android:layout_width="100dip" android:layout_height="100dip" />
        <ImageButton android:id="@+id/monimage2" android:src="@drawable/globe" android:layout_width="100dip" android:layout_height="100dip" />
      </TableRow>
    </TableLayout>
    Auriez-vous une petite idée ?

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 542
    Par défaut
    Pourquoi avez vous fixé des tailles pour les imageButtons?

  3. #3
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 127
    Par défaut
    Apparemment c'est un peu le rôle d'un TableLayout, essaie de virer dans des ImageButtons :
    android:layout_width=
    android:layout_height=

    Et tu verras que tes ImageButton seront toujours là.
    Apparemment ça gère l'affichage des objets contenu à l'intérieur.

    Edit :
    Après une seconde de recherche (sérieusement) :
    http://developer.android.com/search....ablelayout&t=0

    Première ligne :
    The children of a TableLayout cannot specify the layout_width attribute. Width is always MATCH_PARENT .
    Mais bon peut être qu'il y a un moyen de contourner le 1er point de cette classe.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 542
    Par défaut
    Ajoute un poid à chaque ImageButton:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    android:layout_weight="1"

  5. #5
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 127
    Par défaut
    Mais non, laissez complétement tomber, regardez TableRow :
    The children of a TableRow do not need to specify the layout_width and layout_height attributes in the XML file. TableRow always enforces those values to be respectively MATCH_PARENT and WRAP_CONTENT.
    http://developer.android.com/referen.../TableRow.html

    Si tu veux spécifier la taille de tes boutons ne passe pas par TableLayout et TableRow.
    Ces classes servent justement à ne pas spécifier la taille.

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 24
    Par défaut
    Alors la solution pourrait être d'utiliser "AbsoluteLayout" (http://developer.android.com/referen...uteLayout.html), sous entendu que tu connaisses au préalable la taille de l'écran sur lequel va tourner ton application ...

    ça peut sembler débile d'utiliser çà mais je vois dans le cadre de mon travail, où j'ai été emmené à mettre le nez dans la programmation sous android, l'application qu'on me demande de faire est spécifique à une tablette dont je connais la taille de l'écran. Donc à la limite si ce n'est pas une application qui est voué à aller sur plusieurs type de téléphone, peut-être qu'utiliser "AbsoluteLayout" au lieu de "TableLayout" est une solution ...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 93
    Par défaut
    Merci à tous, je n'avais pas vu qu'il ne s'agissait pas du tout d'un équivalent des tableaux html.

    L'AbsoluteLayout est deprecated.

    Je vais me tourner vers une imbrication de LinearLayoust mais c'est dommage qu'il n'y ait pas une solution plus simple.

  8. #8
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 127
    Par défaut
    Il ni a pas plus simple que les LinearLayout :
    http://developer.android.com/resourc...earlayout.html

    C'est même plus simple qu'un tableau HTML.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 93
    Par défaut
    C'est comme l'imbrication de tableaux en html, ça me parrait un peu sal d'imbriquer plusieurs LinearLayout

  10. #10
    Membre prolifique
    Avatar de Ryu2000
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    10 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 10 127
    Par défaut
    Mais non c'est fait pour, même Google le fait dans ses exemples.

    Il ne fait juste pas trop imbriquer, par exemple 10 LinearLayouts dans un LinearLayout ça doit être propre.

    Par contre un LinearLayout dans un LinearLayout dans un LinearLayout dans un LinearLayout dans un LinearLayout dans un LinearLayout dans un LinearLayout dans un LinearLayout dans un LinearLayout dans un LinearLayout là ça ne doit plus être propre.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 93
    Par défaut
    Avec des Linear Layouts, j'ai fait ça pour la première ligne de boutons :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    		<!-- line 1 -->
    		<LinearLayout android:layout_width="fill_parent"
    			android:layout_height="wrap_content"
    			android:orientation="horizontal">
    			<ImageButton android:id="@+id/watchButton"
    				android:src="@drawable/speed_kmh"
    				android:layout_width="95dip"
    				android:layout_height="95dip"
    				android:layout_marginRight="7dip"
    				android:scaleType="centerInside" />
    			<ImageButton android:id="@+id/watchButton"
    				android:src="@drawable/flag_damier"
    				android:layout_width="95dip"
    				android:layout_height="95dip"
    				android:layout_marginRight="7dip"
    				android:scaleType="centerInside" />
    			<ImageButton android:id="@+id/watchButton"
    				android:src="@drawable/stopwatch"
    				android:layout_width="95dip"
    				android:layout_height="95dip"
    				android:scaleType="centerInside" />
    		</LinearLayout>
    Je veux 3 boutons de taille fixe sur une ligne, centrés à l'horizontale et avec un espacement entre les boutons.

    Edit : j'ai un autre problème, les images redimensionnées automatiquement sont pixelisées, alors qu'elles étaient très nettes.

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Par défaut
    Bonjour,
    Essaye de jouer avec les attributs xml comme adjustViewBounds ou scaleType.
    Voici le lien http://developer.android.com/referen...html#ImageView

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 93
    Par défaut
    Merci !
    J'ai trouvé une méthode pas mal aussi, c'est de mettre une image 128x128 pixels au lieu de 600x600. Ca change tout sur la qualité de la redimension.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 11
    Par défaut
    Salut,

    J'ai eu le même problème avec des imageView. Il suffit de mettre un linearLayout dans la cellule qui sera lui aussi fatalement élargi. Mais vous pouvez faire ce que vous voulez avec les élements qui seront à l'intérieur, comme leur donner une largeur en dp.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 93
    Par défaut
    Pas bête le linear layout qui prendra toute la largeur de la colonne, mais le TableLayout perd un peu de son intérêt simplicité du xml

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/05/2004, 19h02
  2. Connaitre la largeur d'un texte en pixels sur un DC
    Par Harry_polin dans le forum Windows
    Réponses: 3
    Dernier message: 11/05/2004, 13h40
  3. [DBGrid] adpater la largeur de dbgrid
    Par esperances dans le forum Bases de données
    Réponses: 5
    Dernier message: 21/04/2004, 10h18
  4. [Flash MX] Largeur du MovieClip à l'écran ?
    Par FredericB dans le forum Flash
    Réponses: 6
    Dernier message: 24/02/2004, 16h17
  5. [JMF][MediaPlayer] hauteur et largeur de la video
    Par mbp566 dans le forum Multimédia
    Réponses: 3
    Dernier message: 07/08/2002, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo