我在设置图层列表中的drawable大小时遇到问题。我的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的原始大小?我不希望它调整大小。我尝试设置宽度和高度,但这不起作用。另外drawables实际上不是位图,它们是selectos,所以我不能使用位图技巧。
通过使用“left”和“right”看起来我有一半的解决方案,但是,这仍然不能让我自动设置图像的确切大小。现在我的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>
答案 0 :(得分:5)
您可以将 android:width 和 android:height 参数与所需的值一起使用。
下面是示例可绘制图层列表和屏幕截图。我使用了谷歌material icons中的矢量drawable和自己的选择器drawable。
原始circle.xml可绘制形状的大小为100dp x 100dp,但是在drawable.xml中,我将此值重写为24dp x 24dp android:width 和 android:height 参数。
我希望这有帮助!
drawable.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/circle" android:height="24dp" android:width="24dp"/>
<item android:drawable="@drawable/ic_accessibility_black_24dp"/>
<item android:drawable="@drawable/ic_http_white_24dp" android:gravity="center" android:top="-3dp" android:height="5dp" android:width="5dp"/>
</layer-list>
circle.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:innerRadius="20dp" android:shape="oval">
<solid android:color="#CCC" />
<size android:width="100dp" android:height="100dp"/>
</shape>
</item>
</selector>
答案 1 :(得分:3)
您可以为此使用插入标记。 例如
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch add_mssql
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: csv/jobdetails.csv
#
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: db/test.db
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# Person.js
# README.MD
# get_supervisorjobs.js
# loadmsqlviews.js
# mssql/
# results.html
# results.js
# supervisorsNpositions.js
这会在你的menu_drawable2周围创建填充,所以它不会被缩放。只需设置所需的尺寸即可。
答案 2 :(得分:0)
希望这会有所帮助: -
您可以为menu_drawable2
使用九个可绘制的补丁。你可以让menu_drawable2
像边缘一样有透明区域。使用此透明区域指定九个修补程序中的可伸展区域。
答案 3 :(得分:0)
我也在Android 5.0(API 21)上遇到了这个问题。看来the gravity
of item
doesn't work for API less than 23。因此需要更新布局,我通过为第二个项目节点应用计算出的填充来使其兼容,该第二个项目节点应该是右上对齐的叠加层。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_svg_filter_black"/>
<item
android:left="16dp"
android:right="0dp"
android:top="0dp"
android:bottom="16dp"
android:drawable="@drawable/ic_circle_dot_red"
/>
</layer-list>
答案 4 :(得分:-3)
我不知道它的作品与否,但你是否试图将它们彼此分开?
类似的东西:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/menu_drawable1"/>
</layer-list>
<layer-list>
<item android:drawable="@drawable/menu_drawable2"/>
</layer-list>
或者把它们放在其他东西之间,就像高度和宽度为0dp的空布局一样。