如何将ImageView对齐到按钮的右边缘?

时间:2017-10-04 14:05:58

标签: java android xml android-layout alignment

我创建了一个带有Button,TextView和ImageView(带有问号)的简单布局。

<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

我希望图像的右边缘(问号)在按钮的右边缘对齐。 另外顶部和底部应该在标题的textView(相同高度)的顶部和底部对齐。

为什么图像在右边缘没有对齐,但是多了一点? 我注意到,如果我增加标题文本大小(例如30dp),问题就会消失,但我需要一个小的文本化。

------编辑:图像是否有最小尺寸,根据该尺寸,这些陈述效果不佳?

2 个答案:

答案 0 :(得分:1)

android:scaleType="fitEnd"添加到您的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"/>

<强>解释

这是ImageView在没有android:layout_alignTop="@+id/textViewmas"属性

的情况下的显示方式

enter image description here

当您将layout_alignTop属性添加到ImageView时,会将其缩小到TextView的高度,并缩小其所包含的图像。默认情况下,scaleType的{​​{1}}属性似乎为ImageView;缩小图像并将其与图像视图的中心对齐,从而在左右两侧添加一些空间。

解决方案是使用centerInside将缩小的图像移动到图像视图的末尾

输出

enter image description here

答案 1 :(得分:0)

您可以使用:

android:layout_alignRight="@+id/button"

或:

android:layout_alignEnd="@+id/button"

然后你可以从左边添加一些边距。