我需要创建一个android形状,以便只有底部有笔画(虚线).当我尝试以下操作时,笔划将形状从中心平分.有谁知道怎么做对吗?中风需要是底线/边界.我使用形状作为TextView的背景.请不要在意我为什么需要它.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
<solid android:color="#1bd4f6" />
</shape>
</item>
<item>
<shape android:shape="line" >
<padding android:bottom="1dp" />
<stroke
android:dashGap="10px"
android:dashWidth="10px"
android:width="1dp"
android:color="#ababb2" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud) 我试图VectorDrawable在LayerList没有缩放矢量的情况下使用a .例如:
<layer-list>
<item android:drawable="@color/grid_item_activated"/>
<item android:gravity="center" android:drawable="@drawable/ic_check_white_48dp"/>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
drawable ic_check_white_48dpid定义为:
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="48dp"
android:height="48dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"/>
</vector>
Run Code Online (Sandbox Code Playgroud)
所需的效果是检查图标在图层可绘制的中心,而不进行缩放.问题是,上面的图层列表会导致检查图标缩放以适合图层大小.
如果我用每个密度的PNG替换矢量drawable并修改图层列表,我可以产生所需的效果:
<layer-list>
<item android:drawable="@color/grid_item_activated"/>
<item>
<bitmap android:gravity="center" android:src="@drawable/ic_check_white_48dp"/>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
我有什么方法可以使用VectorDrawable?
我有一个视图,用作一个项目ListView.在我的自定义适配器中,我View.setBackgroundResource()根据项目在列表中的位置更改视图的背景.(我对列表中的第一个和最后一个项目有单独的资产.)
这会按预期设置正确的背景图像,但它具有令人讨厌的副作用,即我在视图的XML定义中设置的所有填充都被完全忽略.
(如果我在XML中设置了可绘制的背景,并且在运行时不要尝试在适配器中改变它,那么填充一切正常.)
如何更改背景图像并保留填充?这是一个错误吗?
编辑似乎其他人在这里发现了同样的问题:更改背景是否也改变了LinearLayout的填充?
我不明白图层列表是如何工作的.我通过一些例子阅读了官方文档,但它并不像我预期的那样适用于我.我想要四个正方形,应该用1dp填充,但没有任何预期.这是一个按500%缩放的屏幕截图:

(错误的颜色无关紧要)
正如您所看到的那样,尺寸完全错误并且缺少填充.我试图设置像宽度/高度和右/左/顶部/按钮的实际值,以确保android得到我想要的点.
这是我的xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="0dp" android:left="0dp" android:bottom="0dp" android:right="0dp">
<shape android:shape="rectangle">
<size android:width="9dp"
android:height="9dp"/>
<solid android:color="#f000"/>
</shape>
</item>
<item android:top="1dp" android:left="1dp" android:bottom="5dp" android:right="5dp">
<shape android:shape="rectangle">
<size android:width="3dp"
android:height="3dp"/>
<solid android:color="#f00"/>
</shape>
</item>
<item android:top="1dp" android:left="5dp" android:bottom="5dp" android:right="1dp">
<shape android:shape="rectangle">
<size android:width="3dp"
android:height="3dp"/>
<solid android:color="#0f0"/>
</shape>
</item>
<item android:top="5dp" android:left="1dp" android:bottom="1dp" android:right="5dp">
<shape android:shape="rectangle">
<size android:width="3dp"
android:height="3dp"/>
<solid android:color="#0f0"/>
</shape>
</item>
<item android:top="5dp" android:left="5dp" android:bottom="1dp" android:right="1dp">
<shape android:shape="rectangle">
<size android:width="3dp"
android:height="3dp"/>
<solid …Run Code Online (Sandbox Code Playgroud) Android studio 2.0 Preview 3b
你好,
我创建了以下布局,我想用它作为我的应用程序的背景.我正在使用layer-list,我想在两个地方展示一碗豌豆.在预览中一切看起来都不错,但是当我在genymotion或一些廉价的中国设备上运行时,图像会在屏幕上延伸.但是,在Android AVD上,一切看起来都不错,在我的Nexus 5(真实设备)上一切正常.
这就是我想要的,这就是它在AVD和Nexus 5中的显示方式.你可以看到没有问题.

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:centerX="0.5"
android:centerY="0.3"
android:endColor="#08e25b"
android:gradientRadius="300dp"
android:startColor="#b7e9c9"
android:type="radial" />
</shape>
</item>
<item
android:width="48dp"
android:height="48dp"
android:left="350dp"
android:top="400dp">
<bitmap android:src="@drawable/peas" />
</item>
<item
android:width="68dp"
android:height="68dp"
android:drawable="@drawable/peas"
android:left="-20dp"
android:top="480dp" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)
我已将peas.png文件放入drawable-nodpi,只需添加宽度和高度layer-list
当我运行genymotion和一些便宜的智能设备时,我得到以下内容:

Run Code Online (Sandbox Code Playgroud)Just quick summary. Nexus 5 real device and AVD devices works ok Genymotion and cheap smart devices doesn't display correctly
我对我应该相信的事感到困惑.我也尝试使用位图来查看是否会产生任何影响.
非常感谢任何建议.
这是我的启动画面.我正在使用一个组装我的背景layer-list.如何将文本添加到图层列表?
我需要创建一个带有图层列表的drawable,使得背景图层是图像,前景是透明颜色.我能够做到这一点.我没有成功的地方是添加一些填充/边距,以便在它们底部显示一段图像,而顶部没有彩色图层.这是我的xml.谢谢你的帮助.
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<bitmap android:src="@drawable/img1"
/>
</item>
<item>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="@color/color1" />
<padding android:bottom="20dp" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
由于此配置不起作用,我的猜测是将填充放在第一层.但我不知道如何用位图做到这一点
android shape xml标签useLevel属性的目的是什么?这与图层列表有关,但无关紧要.从文档我发现useLevel标记的meanging:
指示drawable的级别是否影响绘制渐变的方式.
所以如果我有以下xml片段:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:innerRadius="15dp"
android:thickness="10dp"
android:useLevel="false">
<solid android:color="#ababf2" />
<size
android:height="50dp"
android:width="50dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
然后使用useLevel = true,禁用戒指.戒指出现必定为假.但是这个属性的目的是什么?文档不清楚.
我有以下drawable set作为背景:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/base_bg"
android:gravity="bottom" />
</item>
<item android:top="10dp" android:left="10dp">
<bitmap android:src="@drawable/decoration1"
android:gravity="top|right"
android:width="25dp"
android:height="25dp" />
</item>
<item android:top="10dp" android:left="10dp">
<bitmap android:src="@drawable/decoration2"
android:gravity="top|right"
android:width="25dp"
android:height="25dp"
/>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
它显示所有位图(base_bg,decoration1和decoration2),但我找不到修改它们大小的方法.我想拥有主要背景,并在其上面根据dpi具有不同尺寸的装饰.有没有一种简单的方法可以做到这一点,或者我真的必须为不同的dpi有一堆"装饰"?这不好,我想改为scale/resize选项!
在android:width和android:height属性的东西,我想了解,但我知道,这是行不通的.目前我正在为不同的DPI使用不同的版本,但希望它可以更加用户友好.
我有一个图层列表
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:right="2dp" android:left="2dp" android:bottom="2dp" android:top="2dp">
<bitmap
android:gravity="center"
android:src="@drawable/ic_menu_alert"/>
</item>
<item android:height="10dp" android:width="10dp" android:gravity="right|top">
<shape android:shape="oval">
<size android:height="10dp" android:width="10dp"/>
<solid android:color="@color/navigation_drawer_notification_red_color"/>
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
显示这个图像
在棒棒糖及以上一切都很好,但在前棒棒糖红圈失去所有尺寸和填充属性和图像看起来像这样
我正在寻找解决方案大约3天,一无所获.我试图制作我自己的工具栏布局并设置为此imagebuuton scaleType ="centerInside",但它没有帮助.有人可以帮忙解决这个问题吗?
提前致谢!
android ×10
layer-list ×10
drawable ×3
background ×2
bitmap ×2
genymotion ×1
layout ×1
padding ×1
shape ×1
xml ×1
xml-drawable ×1