如何在图层列表中设置可绘制尺寸
我在设置图层列表中可绘制对象的大小时遇到问题。我的 XML 如下所示:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/menu_drawable1"/>
<item android:drawable="@drawable/menu_drawable2"/>
</layer-list>
Drawable1 比 Drawable2 大,因此 Drawable2 会调整大小。如何覆盖它并设置 Drawable2 的原始大小?我不想让它调整大小。我尝试设置宽度和高度,但这不起作用。另外,可绘制对象实际上并不是位图,它们是选择器,所以我不能使用位图技巧。
看起来我已经通过使用“左”和“右”得到了一半的解决方案,但是,这仍然不允许我自动设置图像的确切大小。现在我的 xml 看起来像这样:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/menu_drawable1"/>
<item android:drawable="@drawable/menu_drawable2" android:right="150dp"/>
</layer-list>
I'm having problem with setting size of drawable in layer-list. My XML looks like this:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/menu_drawable1"/>
<item android:drawable="@drawable/menu_drawable2"/>
</layer-list>
Drawable1 is bigger than Drawable2, so Drawable2 gets resized. How to override this and set the original size of Drawable2? I don't want it to resize. I tried with setting width and height but that doesn't work. Also the drawables aren't actually bitmaps, they are selectos, so I can't use the bitmap trick.
It looks like I've got half of the solution by using "left" and "right", but still, this doesn't let me set the exact size of the image automatically. Now my xml looks like this:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/menu_drawable1"/>
<item android:drawable="@drawable/menu_drawable2" android:right="150dp"/>
</layer-list>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以使用具有所需值的 android:width 和 android:height 参数。
下面是示例可绘制图层列表和屏幕截图。我使用了来自 google 材质图标的矢量可绘制元素和自己的选择器可绘制元素。
原始的circle.xml可绘制形状具有100dp x 100dp大小,但在drawable.xml中,我通过android:width和android:height参数将此值覆盖为24dp x 24dp。
我希望这有帮助!
drawable.xml
Circle.xml
You can use android:width and android:height parameters with desired values.
Below is the sample drawable layer-list and screen shot. I used the vector drawable from google material icons and own selector drawable.
Original circle.xml drawable shape have 100dp x 100dp size, but into drawable.xml I override this values to 24dp x 24dp by android:width and android:height parameters.
I hope this help!
drawable.xml
circle.xml
您可以为此使用插入标签。
例如,
这将在您的 menu_drawable2 周围创建填充,因此它不会被缩放。只需设置您需要的尺寸即可。
You can use inset tag for this.
For example
This will create paddings around you menu_drawable2 so it won`t be scaled. Just set the dimensions that you require.
我也在 Android 5.0 (API 21) 上遇到了这个问题。看来
item
的重力
不适用于API 小于 23。因此需要更新布局,我通过为第二个项目节点应用计算的填充来使其兼容,该节点应该是右上对齐的覆盖层。I also came across the issue on Android 5.0 (API 21). It seems the
gravity
ofitem
doesn't work for API less than 23. So the layout is required to be updated, I've made it compatible by applying calculated paddings for the second item node which is supposed to be a right-top aligned overlay.对于低于 23 的 API 级别,您可以在
对象上指定
,如下所示:For API levels below 23, you can specify
<size>
on<shape>
objects like below:希望这会有所帮助:-
您可以为
menu_drawable2
使用九个补丁可绘制对象。您可以使menu_drawable2
就像在其边缘周围具有透明区域一样。使用此透明区域指定九个面片中的可拉伸区域。Hope this will help :-
You can use a nine patch drawable for
menu_drawable2
. You can makemenu_drawable2
like having transparent region around it edges. Use this transparent region to specify stretchable region in nine patch.