Dei*_*mos 30 size android list drawable android-layout
我在layer-list中设置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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以为此使用插入标签。例如
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/menu_drawable1"/>
<item>
<inset android:drawable="@drawable/menu_drawable2"
android:insetRight="50dp"
android:insetTop="50dp"
android:insetLeft="50dp"
android:insetBottom="50dp" />
</item>
Run Code Online (Sandbox Code Playgroud)
这将在您的 menu_drawable2 周围创建填充,因此它不会被缩放。只需设置您需要的尺寸。
您可以使用具有所需值的android:width和android:height参数.
下面是示例可绘制图层列表和屏幕截图.我使用了google 材料图标中的矢量drawable 和自己的选择器drawable.
原始的circle.xml可绘制形状有100dp x 100dp大小,但是在drawable.xml中我通过android:width和android:height参数将这个值覆盖到24dp x 24dp .
我希望这有帮助!
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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
我也在 Android 5.0 (API 21) 上遇到了这个问题。看来of不适用于小于 23 的gravityAPIitem。因此需要更新布局,我通过为第二个项目节点应用计算的填充来使其兼容,该节点应该是右上对齐的覆盖层。
<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>
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助:-
您可以使用九个补丁可绘制的menu_drawable2. 您可以menu_drawable2在其边缘周围设置透明区域。使用此透明区域指定九个面片中的可拉伸区域。
| 归档时间: |
|
| 查看次数: |
18776 次 |
| 最近记录: |