Android 如何使用不同类型的重力使LayerImage可绘制

Android 如何使用不同类型的重力使LayerImage可绘制,android,layerdrawable,Android,Layerdrawable,我试图建立一个图像视图,其中有两个图像;背景中的一张照片,上面有一个小指示器。然而,我一直试图让指示器显示在图像的右下角,而背景中的照片应该居中并缩放以适应主图像 玩弄各种元素的重力属性似乎并没有真正完成任何事情 下面是我试图用来在drawable内部设置重力的代码,以及包含LayerDrawable的XML元素,它有自己的重力集,但这两个元素似乎都不起作用 Resources r = fragment.getActivity().getResources(); Drawable

我试图建立一个图像视图,其中有两个图像;背景中的一张照片,上面有一个小指示器。然而,我一直试图让指示器显示在图像的右下角,而背景中的照片应该居中并缩放以适应主图像

玩弄各种元素的重力属性似乎并没有真正完成任何事情

下面是我试图用来在drawable内部设置重力的代码,以及包含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"/>
Resources r=fragment.getActivity().getResources();
可拉伸[]层=新的可拉伸[2];
层[0]=r.getDrawable(r.drawable.addcoverphoto);
层[1]=r.getDrawable(r.drawable.project_active);//这通常是用户内容
((位图绘制)层[1]).setGravity(Gravity.RIGHT);
LayerDrawable LayerDrawable=新的LayerDrawable(层);
image.setImageDrawable(layerDrawable);

您可以将叠加图像(右下角的图像)设置为九块图像,其中图像位于九块图像的右下角。这需要将最左边的两个像素和最上面的两个像素作为可伸缩部分。这样的话,可拉丝将拉伸,以匹配左侧和顶部,留下您的图像在右下角


如果解决方案中需要更大的灵活性,可以在两个ImageView周围使用framelayout。使用第一个imageview显示您的照片,并将第二个imageview上的布局重力设置为底部|右侧,布局的宽度和高度为包裹内容。

如此优雅的解决方案!谢谢