我正在制作一个<layer-list>可绘制的.
我有我的背景图像,我希望第二层更小,但似乎无论我在我android:layer_width和我内部写的是什么android:layer_height.
第二层大小仍然相同.
这是我的xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<item
android:drawable="@drawable/picuser"
android:layout_width="50dp"
android:layout_height="50dp" />
<item
android:drawable="@drawable/ic_launcher"
android:layout_width="10dp"
android:layout_height="10dp" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)
ozn*_*nus 31
这是一种解决方法,但它对我有用.
您可以使用填充以使第二个drawable更小.
<item android:drawable="@drawable/circyle" />
<item
android:drawable="@drawable/plus"
android:top="10dp"
android:bottom="10dp"
android:right="10dp"
android:left="10dp" />
Run Code Online (Sandbox Code Playgroud)
amp*_*amp 18
我希望这会让你朝着正确的方向前进:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/picuser"/>
<item>
<bitmap
android:src="@drawable/ic_launcher"
android:gravity="center" />
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
正如你在这里看到的,<item>没有layout_width/ layout_height属性.
Dav*_*zzo 14
不像有人说的那样,也有宽度和高度属性<item>.感谢@Entreco发布的演示.
android:width而android:height对于Drawables为类似android:layout_width和android:layout_height为ViewS,不像它们可以被设置为既不match_parent也没有wrap_content,但你可以实现相同的行为match_parent由属性设置android:gravity要么left|right或start|end(匹配父母的宽度),或top|bottom(匹配父母的高度).
不幸的是,这些属性仅在API 23之后可用.
但是,考虑到上面的方法我在地方的建议match_parent,并且android:width和android:height属性都可以用来<size>元素(其内要放<shape>)没有任何API限制,你可以使用一个简单的解决方法:
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:shape="rectangle">
<size
android:width="152dp"
android:height="152dp"/>
<solid
android:color="#00FFFFFF"/>
</shape>
</item>
<item>
<bitmap
android:gravity="left|right|top|bottom"
android:src="@mipmap/ic_launcher"/>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
上述解决方案利用了具有尺寸<item>(具有透明度<shape>)和未尺寸(具有a )的尺寸<bitmap>,其android:gravity设置left|top|right|bottom为匹配父母的尺寸.因此,该实际大小<bitmap>将由<item>同一父母中唯一大小的大小决定.
编辑:
感谢@Emil S,他注意到上述解决方案不能用作窗口背景.它只能作为任何视图的背景或前景正常工作.我不知道这种奇怪行为的特殊原因,但我可以猜测,当系统创建一个具有android:windowBackground属性指定的背景的窗口时,没有执行布局,因为尚未启动任何进程.因此,我认为,Android最终将在屏幕尺寸上光栅化可绘制并将其拉伸以填满整个窗口.这可以解释如何发生这种情况.
编辑:
@JoãoCarlos在使用自适应图标(由背景和forground制作的图标,支持矢量绘图)时,指出我的解决方案不起作用(因为它会导致循环继承).然而,他的观点是无意义的,因为自适应图标需要API 26:可以直接使用android:width并android:height在启动屏幕上使用(他们只需要API 23).
因此,为了得到任何Android设备中任何版本的工作,你需要diferentiate 2绘项目,前者为API <23,用我张贴的解决方案,并为后者API> = 23,用两个属性就像我之前说过几行文字一样.
Ent*_*eco 10
从API Level 23及更高版本,您可以实际设置项目的宽度和高度
<item
android:drawable="@drawable/splash_logo"
android:height="100dp"
android:width="100dp"/>
Run Code Online (Sandbox Code Playgroud)
注意:使用android:width而android:height不是android:layout_width和android:layout_height