我有两个形状可绘制的xml文件,我在图像按钮上使用。一个包含一个环,另一个包含一个足够小的椭圆形,可以放入较大的环中,类似于单选按钮。在此图像 https://i.stack.imgur.com/Uj3aj.jpg 中,您可以看到(从左到右)环、较小的中间椭圆形以及显示两者的图层列表视图的组合图像。这不起作用,而是显示一个完整的椭圆形填充。
这是环 xml:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:innerRadiusRatio="3"
android:thickness="1dp"
android:useLevel="false">
<solid android:color="#1976D2" />
<size
android:height="20dp"
android:width="20dp" />
</shape>
这是椭圆形的 xml:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#1976D2" />
<size
android:height="7dp"
android:width="7dp" />
</shape>
下面是图层列表 xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ring_select" />
<item android:drawable="@drawable/ring_center" />
</layer-list>
我不熟悉分层列表,因为我是安卓新手。 我做错了什么?
如果另一个人在知识渊博的谷歌的指导下来到这个页面......
我有一个可能对您有用也可能无效的解决方法:不要使用 <scale>
,请尝试<inset>
.您可以使用<item>
的android:top
/android:bottom
/android:left
/android:right
和<inset>
的android:insetXXX
的组合来调整图像大小
您可以执行一些操作,例如相对于源图像的尺寸设置每个插图值的边。例如,如果你有一个 64 像素宽的图像,并且想将其减少 50%,你可以为每边做 (64/4 = 16<</p>
我终于找到了答案。基本上,前面的椭圆需要将其添加到其行中:
<item android:top="10dp" android:bottom="10dp" android:left="10dp" android:right="10dp">
尺寸需要相同,因为这是一个椭圆形。我仍然不确定为什么椭圆形拉伸到戒指的整个尺寸,特别是因为尺寸已经定义。 如果有人知道为什么顶部椭圆形会这样拉伸,请告诉我。