Выравнивание изображения в ImageView в верхнем правом углу - PullRequest
0 голосов
/ 26 августа 2018

ImageView имеет больший размер, чем изображение. Как выровнять изображение в верхнем правом (и нижнем левом) углу элемента управления?

P.S. Я знаю о параметре scaleType. Его значения fitStart и fitEnd не подходят в этом случае, потому что они выравнивают изображение в противоположных углах.

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

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);
}
0 голосов
/ 26 августа 2018

Самый простой способ, вероятно, состоит в том, чтобы не использовать вид изображения и создать собственный вид, который делает то, что вы хотите. Это довольно тривиально. Если не считать этого, используйте матрицу scaletype и создайте матрицу, которая переводит и масштабирует соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...