2017-10-04 2 views
-1

J'ai créé une mise en page simple avec un bouton, un TextView et un ImageView (avec un point d'interrogation).Comment aligner un ImageView sur le bord droit d'un bouton?

<Button 
     android:background="#f00" 
     android:textSize="25dp" 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:text="Button" 
     android:id="@+id/button" /> 


    <TextView 
     android:id="@+id/textViewmas" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/button" 
     android:layout_alignLeft="@+id/button" 
     android:layout_alignStart="@+id/button" 
     android:text="title " 
     android:textSize="18dp" /> 

    <ImageView 
     android:id="@+id/questionmark" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@id/textViewmas" 
     android:layout_alignTop="@+id/textViewmas" 
     android:layout_alignRight="@+id/button" 
     android:layout_alignEnd="@+id/button" 
     app:srcCompat="@drawable/questionmark"/> 

enter image description here

The question mark should be a bit more right

Je veux bord droit de l'image (questionmark) pour aligner sur le bord droit du bouton. En plus, le haut et le bas doivent être alignés en haut et en bas de l'affichage de texte du titre (même hauteur). Pourquoi l'image ne s'aligne-t-elle pas sur le bord droit, mais un peu plus à gauche? J'ai remarqué que si j'augmente la taille du texte title (par exemple 30dp) le problème disparaît, mais j'ai besoin d'un petit textize.

------ EDIT: Y a-t-il peut-être une taille minimale pour les images, sous laquelle les instructions ne fonctionnent pas bien?

+0

Qu'est-ce que u veut exactement u peut faire une image peindre si vous voulez alors je vais concevoir pour vous exactement vous voulez. –

+0

Assurez-vous que votre image n'a pas de rembourrage supplémentaire autour. S'il y a un rembourrage supplémentaire avec l'image, retirez-le en utilisant Photoshop ou tout autre outil. Vous pouvez également vérifier avec cette image et voir si elle correspond ou non. https://image.flaticon.com/icons/png/512/78/78299.png – Aveek

+0

J'ai posté une solution. Faites-moi savoir si cela fonctionne –

Répondre

1

Ajouter android:scaleType="fitEnd" à votre ImageView

<Button 
    android:id="@+id/button" 
    android:layout_height="wrap_content" 
    android:layout_width="200dp" 
    android:textSize="25dp" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:background="#f00" 
    android:text="Button"/> 

<TextView 
    android:id="@+id/textViewmas" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/button" 
    android:layout_alignLeft="@+id/button" 
    android:text="title " 
    android:textSize="18dp" /> 

<ImageView 
    android:id="@+id/questionmark" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@id/textViewmas" 
    android:layout_alignTop="@+id/textViewmas" 
    android:layout_alignRight="@+id/button" 
    android:layout_alignEnd="@+id/button" 
    android:scaleType="fitEnd" 
    app:srcCompat="@mipmap/ic_launcher"/> 

Explication

Voici comment l'ImageView apparaîtrait sans l'attribut android:layout_alignTop="@+id/textViewmas"

enter image description here

Lorsque vous un dd l'attribut layout_alignTop au ImageView, il est réduit à la hauteur du TextView et l'image qu'il contient est réduite. Par défaut, la propriété scaleType du ImageView semble être centerInside; qui redimensionne l'image et l'aligne au centre de la vue de l'image, ajoutant ainsi de l'espace à gauche et à droite.

La solution serait d'utiliser android:scaleType="fitEnd" pour déplacer la réduite image à la fin de la vue de l'image

La sortie

enter image description here

+0

merci, enfin ça marche! – user7940193

0

Vous pouvez utiliser:

android:layout_alignRight="@+id/button" 

ou:

android:layout_alignEnd="@+id/button" 

et vous pouvez ajouter une certaine marge de gauche.

+0

vos deux déclarations d'alignement que j'ai déjà ajouté dans mon code. La marge de gauche ne change rien. – user7940193

+0

Ensuite, vous pouvez obtenir la hauteur de votre texte et le définir à la hauteur et la hauteur de vos images. –