Как сделать LayerImageDrawable с различными типами гравитации

Я пытаюсь создать вид изображения, в котором есть два изображения; фотография на заднем плане с небольшим индикатором сверху. Однако я застрял в попытке заставить индикатор появляться в правом нижнем углу изображения, в то время как фотография на заднем плане должна быть отцентрирована и масштабирована так, чтобы соответствовать основному изображению.

Игра со свойствами гравитации различных элементов, похоже, ничего не дает.

Ниже приведен код, который я пытался использовать для установки гравитации внутри объекта, и XML-элемент, который содержит LayerDrawable со своим собственным набором гравитации, но ни один из них, похоже, ничего не делает.

    Resources r = fragment.getActivity().getResources();
    Drawable[] layers = new Drawable[2];
    layers[0] = r.getDrawable(R.drawable.addcoverphoto);        
    layers[1] = r.getDrawable(R.drawable.project_active); // this is usually user-content instead 
    ((BitmapDrawable)layers[1]).setGravity(Gravity.RIGHT);
    LayerDrawable layerDrawable = new LayerDrawable(layers);
    image.setImageDrawable(layerDrawable);      

   <ImageView
    android:layout_width="100dp"
    android:layout_height="0dp"        
    android:id="@+id/todayPhotoView"
    android:scaleType="center"
    android:layout_gravity="bottom"/>

1 ответ

Решение

Вы можете сделать наложенное изображение (изображение для правого нижнего угла) изображением из девяти пятен, где изображение расположено в нижнем правом углу девяти пятен. Для этого потребуется сделать самые левые два пикселя и два верхних пикселя масштабируемой частью. Таким образом, рисунок будет растягиваться, чтобы соответствовать слева и сверху, оставляя ваше изображение в правом нижнем углу.

если вам нужно больше гибкости в решении, вы можете использовать разметку кадров вокруг двух ImageViews. используйте первый просмотр изображений для отображения вашей фотографии и установите гравитацию макета на втором просмотре изображений снизу и справа с помощью wrap_content для layout_width & height.

Другие вопросы по тегам