我试图把两个椭圆形的抽屉放在一起,第一个有透明度。然而,按照我的方式,它显示第一个椭圆形的第二个椭圆形的颜色。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="oval">
<size android:width="15dp" android:height="15dp" />
<solid android:color="#35000000"/>
</shape>
</item>
<item>
<shape android:shape="oval">
<size android:width="5dp" android:height="5dp" />
<solid android:color="#000000"/>
</shape>
</item>
</layer-list>
如何让它按预期工作?
修改 这是父母:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/my_layerlist" />
</LinearLayout>
答案 0 :(得分:8)
在对不同类型的XML drawable进行大量研究之后,您的LayerDrawable
(图层列表)似乎正在独立地缩放ShapeDrawables
。 然后 ,ImageView
正在缩放LayerDrawable
。根据{{3}}, ShapeDrawable
和LayerDrawable
的扩展是一个问题。 LayerDrawable
将检查您拥有的每个项目的必要缩放比例。他们有几个解决方案:
gravity
设置为无法缩放的内容,例如“center”。这有两个主要问题,但是......您只能gravity
使用bitmap
。并且您不能将ShapeDrawable用于XML中的bitmap
。我尝试了 一切 我能想到要做到这一点。这是唯一为我修复它的事情。
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/oval1"
android:scaleType="center" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@drawable/oval2"
android:scaleType="center" />
</FrameLayout>
所以:我删除了LayerDrawable,将Shapes分成了自己的XML,制作了两个ImageView。 (为了方便我将它们卡在FrameLayout中)。这是阻止缩放的唯一方法。
在Android 2.1,3.0,4.0中测试
scaleType
width
和height
item
s,drawable
属性引用了分隔shape
s bitmap
引用分隔的shape
s。shape
s 或者,您可以在代码中执行此操作。