如何将可绘制的形状与图像一起使用?
Posted
技术标签:
【中文标题】如何将可绘制的形状与图像一起使用?【英文标题】:How to use a shape drawable together with an image? 【发布时间】:2011-09-09 23:15:30 【问题描述】:我很难在LinearLayout
中同时拥有圆角和背景图像。
我知道我可以通过使用 shape drawable XML 来实现圆角,但如果我将 shape drawable 作为LinearLayout
的背景android:background=@drawable/rounded_corner
,那么我无法指定任何图像用作背景。
如何在我的 LinearLayout 中同时获得带有背景图像的圆角? 任何帮助,将不胜感激。谢谢!
【问题讨论】:
【参考方案1】:您可以使用LayerDrawable,它可以根据需要包含任意数量的图层(形状或图像)。您可以将其创建为资源或以编程方式。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/rounded_corners" android:id="@+id/rounded_corners"/>
<item android:drawable="@drawable/additional_image" android:id="@+id/additional_image" />
</layer-list>
【讨论】:
感谢woodshy 的回答 :) 我试过了,但它不像我预期的那样工作。它们只是被放在彼此的顶部,背景图像的角部分在圆角形状后面仍然可见。知道如何在保持圆角形状的同时使用背景图像吗? 那么为什么不能创建圆角的图像呢? 那将是最简单的方法,但如果可以的话,我想避免这种情况。事实是,图像是由其他人制作的,如果可能的话,我想在不要求他更改图像本身的情况下这样做。 这对我有用,因为我想要一个圆圈内的图像,圆圈是一个 xml 形状,所有角都是 30dp,而图像只是一个可绘制的。 我发现添加第二层(图像)时,第一层(形状)被放大了。图像小于形状。这是正常的吗?我该如何避免呢?【参考方案2】:对于那些寻求不同答案的人
在xml中
<string-array name="ulke_isimleri">
<item>kan</item>
<item>kebapeli</item>
</string-array>
<array name="ulke_gorselleri">
<item>@drawable/kan1</item>
<item>@drawable/esyalar_kebap_adana</item>
</array>
在 oncreate 或一般
String[] ulkeAdlari =getResources().getStringArray(R.array.ulke_isimleri);
TypedArray ulkeGorselleri = getResources().obtainTypedArray(R.array.ulke_gorselleri);
作为一个函数
@Override
public Drawable getDrawable(int position)
Drawable[] drawable = new Drawable[]
ulkeGorseli.getDrawable(position )
,
new TextDrawable(ulkeAdlari[ position ] )
;
return new LayerDrawable(drawable);
【讨论】:
以上是关于如何将可绘制的形状与图像一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
如何在背景图像上绘制(如在 GLPaint 中)并使用临时绘图?
将可绘制图像正确共享到其他应用程序(在没有 FileProvider 的情况下将 PNG 共享到 Whatsapp 失败)