我正在尝试构建一个内部包含两个图像的图像视图;背景中有一张照片,上面有一个小指示器。但是,我坚持试图让指示器出现在图像的右下角,而背景中的照片应该居中并缩放以适应主图像。
玩弄各种元素的重力特性似乎并没有真正完成任何事情。
下面是我尝试用来在可绘制对象内设置重力的代码,以及包含 LayerDrawable 及其自己的重力集的 XML 元素,但似乎两者都没有执行任何操作。
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"/>
您可以将叠加图像(右下角的图像)设为九个补丁图像,其中图像位于九个补丁的右下角。 这需要使最左边的两个像素和最上面的两个像素成为可缩放的部分。 这样,可绘制对象将拉伸以匹配左侧和顶部,将图像保留在右下角。
如果需要在解决方案中具有更大的灵活性,则可以在两个 ImageView 周围使用框架布局。 使用第一个 ImageView 显示您的照片,并将第二个 ImageView 上的布局重力设置为 bottom|right,并wrap_content表示layout_width和高度。