Как сделать 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.