如何使具有不同类型重力的LayerImageDrawable



我正在尝试构建一个内部包含两个图像的图像视图;背景中有一张照片,上面有一个小指示器。但是,我坚持试图让指示器出现在图像的右下角,而背景中的照片应该居中并缩放以适应主图像。

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

下面是我尝试用来在可绘制对象内设置重力的代码,以及包含 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和高度。

相关内容

  • 没有找到相关文章

最新更新