java - 将 ImageView 中的图像对齐到右上角

标签 java android android-layout imageview

ImageView 比图片大。如何对齐控件右上角(和左下角)的图像?

附言我知道参数 scaleType。它的值 fitStartfitEnd 在这种情况下不合适,因为它们在对角对齐图像。

最佳答案

scaleType 不能让您在右上角或左下角对齐 View ,但 layout_gravity 可以。

...
<FrameLayout android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ImageView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="start|bottom" 
        android:src="@drawable/your_drawable"/>
</FrameLayout>
...

根据您的需要相应地更改layout_gravity:
左下:开始|底部
右上角:顶部|结束

使用 layout_gravity 对齐 View 更简单。如果你不喜欢,你可以这样使用 ImageView & 矩阵:

private void alignTopRight(ImageView imageView)
{
    imageView.setScaleType(ImageView.ScaleType.MATRIX); // !

    final int drawableWidth = imageView.getDrawable().getIntrinsicWidth();
    final int viewWidth = imageView.getWidth();
    Matrix matrix = new Matrix();
    matrix.postTranslate(viewWidth-drawableWidth, 0);
    imageView.setImageMatrix(matrix);
}

private void alignBottomLeft(ImageView imageView)
{
    imageView.setScaleType(ImageView.ScaleType.MATRIX); // !

    final int drawableHeight = imageView.getDrawable().getIntrinsicHeight();
    final int viewHeight = imageView.getHeight();
    Matrix matrix = new Matrix();
    matrix.postTranslate(0, viewHeight-drawableHeight);
    imageView.setImageMatrix(matrix);
}

关于java - 将 ImageView 中的图像对齐到右上角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52024993/

相关文章:

Java:比较字符数组是否区分大小写?

java - 如何从 java 连接到远程 unix 盒子并在其中运行 unix 脚本?

android - Android 1.5 中的服务器套接字编程,最省电的方式?

java - 在同一对象中具有链接图像的 Firebase 实时数据库

android - 具有透明背景的 LinearLayout 上的顶部边框

android - 如果我的 Android Studio 的空 Activity 没有生成布局文件,我该怎么办?

java - 如何在Java中加载和使用第三方.dll的功能

java - 检查 Hibernate 中的分离实体

android - AbsListView unregisterIRListener() 被调用

android - TextInputLayout 提示文本颜色在焦点上改变