0
votes

Android: imageview src ignore la propriété Layout_weight de l'élément parent

J'ai deux lignes de table verticales avec la propriété layout_weight = "1" de sorte qu'ils prennent une place égale verticalement, mais si j'ajoute une balise "imageView" dans ces tables tags avec Android: SRC Propriété Il redimensionnement de la balise de mayerow parent en fonction de la taille réelle de l'image, de même que je peux conserver ces hauteurs égales de Tablerow sans spécifier la taille exacte de l'imageView ou de la majuscule Code,

code de travail (version simplifiée) xxx

mais dès que j'ajoute le android: src à imageviews Propriété et choisissez une image , la taille du parent change en fonction de la taille de cette image, est-ce que l'image correspond à la taille actuelle du parent `et ne change pas sa taille parent ?

Basé sur Manishika Répondre j'ai essayé ce code mais il n'a pas fonctionné non plus xxx

merci!


2 commentaires

Remarque: Pour une meilleure prise en charge de performances et d'outils, vous devez plutôt construire votre mise en page avec contraintlayout.


Merci, mais c'est la nécessité de mon projet actuel @simplecoder


5 Réponses :


0
votes

Assurez-vous que le parent_layout a un Android: Weightsum = "2" attribut

Android: Weightsum

Définit la somme maximale du poids. Si non spécifié, la somme est calculée en ajoutant le poids de layout de tous les enfants. Cela peut être utilisé par exemple pour donner à un seul enfant 50% du total disponible espace en lui donnant un poids de layout de 0,5 et en définissant la perte de poids à 1.0.


0 commentaires

0
votes

Essayez ceci. De cette façon, les deux rangées diviseront la hauteur de la mise en page de la table. Hauteur I spécifiée comme 400DP juste pour tester si elle se divise également parmi les rangées. Vous pouvez le conserver au parent correspondant ou quelque chose en fonction de votre exigence.

    <TableLayout android:layout_width="match_parent"
        android:layout_height="400dp">
        <TableRow android:layout_weight="1">
            <ImageView
                android:background="@color/white"
                android:src="@drawable/image"
                android:layout_height="match_parent"/>
        </TableRow>
        <TableRow android:layout_weight="1">
            <ImageView
                android:background="@color/black"
                android:src="@drawable/image"
                android:layout_height="match_parent"/>
        </TableRow>
    </TableLayout>


0 commentaires

0
votes

Vérifiez la méthode de type d'échelle. De plus, si vous ne voulez pas que vos images sautent le reste de la disposition, vous pouvez toujours mettre une hauteur ou une largeur spécifique xxx


0 commentaires

0
votes

Vous devez mettre android: weightsum = "2" sur votre table-pieds, et vous devez également définir votre layout_width = "0 dp" dans les deux Tablerow. Je ne pense pas que vous ayez besoin de Android: Layout_weight = "1" sur votre imageView tho


0 commentaires

0
votes

Si vous recherchez toujours une réponse, veuillez envisager de faire les changements ci-dessous:

  1. Ajouter Android: MesureWithLargesThild = "true" code> à votre TableLayout code>, cela garantira la hauteur de la ligne de la plus grande hauteur Tablerow code > Parmi tous. P> LI>

  2. au lieu d'ajouter de la gravité à TableLayout code> Ajoutez-le aux taquiers comme Layout_gravity code> contrôle comment la vue établit son contenu dans son propre conteneur et je pense que vous voulez le Images à être au centre. P> li>

  3. ajout poids code> à TableLayout code> et diviser les poids dans chaque Tablerow code>. P> LI> ol>

    Essayez la présentation ci-dessous XML I Used et fonctionne: P>

    <TableLayout android:layout_width="match_parent"
                 android:layout_height="match_parent"
                 android:weightSum="1"
                 android:measureWithLargestChild="true">
    
        <TableRow
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:background="@android:color/holo_green_light"
                android:gravity="center"
                android:layout_weight=".5">
    
            <ImageView
                    android:layout_width="match_parent"
                    android:src="@drawable/ic_launcher_background"
                    android:background="@android:color/white"/>
        </TableRow>
    
        <TableRow
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight=".5"
                android:gravity="center"
                android:background="@android:color/holo_blue_bright">
    
            <ImageView
                    android:layout_width="match_parent"
                    android:src="@drawable/ic_dashboard_black_24dp"
                    android:background="@android:color/black"/>
        </TableRow>
    </TableLayout>
    


5 commentaires

Merci d'avoir répondu mais cela ne fonctionne pas, essayez d'ajouter plus de lignes, car ex, ajoutez 10 tabliers (donc android: weighsum = "10" ) puis ajoutez une propriété "SRC" sur ALIMAGE IMAGEVIEWS, VOUS verra leur conteneur changements de hauteur


Cela fonctionne avec mes changements même avec 10 rangées. Pouvez-vous poster le XML avec mes modifications implémentées


Bonjour, vous utilisez une petite image @ drakable / ic_dashboard_black_24dp Si vous utilisez une image personnalisée qui est de la taille plus grande, il éliminera la taille du conteneur, essayez d'ajouter Outils: srccompat = "@Tools: échantillon / arrière-plans / scénique" au lieu de android: src = "@ drail / ic_dashboard_black_24dp"


Je ne peux pas pouvoir coller le XML complet ici, il dépasse les mots limites


J'ai collé XML dans la question avec vos changements suggéré