scaleType
не может позволить вам выровнять вид в правом верхнем или нижнем левом углу, но 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
соответственно исходя из ваших потребностей:
низ-left: start | bottom
top-right: top | end
Проще использовать layout_gravity
для выравнивания видов.Если вам не нравится, вы можете использовать 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);
}