2

我在 imagebuttons 上使用了两个可绘制形状的 xml 文件。一个包含一个环,另一个包含一个小到足以放入较大环的椭圆形,类似于单选按钮。在这张图片http://imgur.com/mYPALoT中,您可以看到(从左到右)环、较小的中间椭圆,以及显示两者的图层列表视图的组合图像。这不起作用,而是显示一个完整的填充椭圆。

这是环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>

我不熟悉图层列表,因为我是 android 新手。我究竟做错了什么?

4

2 回答 2

1

如果另一个人在知识渊博的 Google 的指导下访问此页面...

我有一个可能对你有用也可能对你不起作用的解决方法:不要使用<scale>,而是尝试<inset>。您可以使用<item>'s android:top//android:bottom和's的组合来android:left调整图像大小android:right<inset>android:insetXXX

您可以执行一些操作,例如将每个插入值的边设置为相对于源图像的尺寸。例如,如果您有一个 64 像素宽的图像并希望将其缩小 50%,则可以对每一边执行 (64 / 4 = 16)

于 2014-12-17T16:03:18.300 回答
0

我终于找到了答案。基本上,前面的椭圆需要将其添加到它的行中:

<item android:top="10dp" android:bottom="10dp" android:left="10dp" android:right="10dp">

尺寸必须相同,因为这是一个椭圆形。我仍然不确定为什么椭圆会拉伸到整个戒指的大小,尤其是在定义了大小之后。如果有人知道为什么顶部的椭圆形会这样拉伸,请告诉我。

于 2014-12-17T19:57:25.553 回答