Android 填充不';t影响<;形状>;在XML布局中
我试图在XML文件/布局中声明的Android 填充不';t影响<;形状>;在XML布局中,android,user-interface,Android,User Interface,我试图在XML文件/布局中声明的中设置填充。但无论我设置什么,都不会改变填充。如果我修改任何其他属性,我会在UI上看到效果。但它不适用于填充。你能告诉我可能发生这种情况的原因吗 以下是我尝试设计的XML形状: <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <stroke android:width="1dp"
中设置填充。但无论我设置什么,都不会改变填充。如果我修改任何其他属性,我会在UI上看到效果。但它不适用于填充。你能告诉我可能发生这种情况的原因吗
以下是我尝试设计的XML形状:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:width="1dp"
android:color="#ffffff"
android:dashWidth="2dp"/>
<solid android:color="@color/button_white_cover"/>
<corners android:radius="11dp"/>
<padding android:left="1dp"
android:top="20dp"
android:right="20dp"
android:bottom="2dp"/>
</shape>
我终于解决了填充问题 所以这里的填充对形状没有影响。取而代之的是,您将不得不在其他将使用它的drawable中应用填充。因此,我有一个使用该形状的绘图板,在那里我做了以下工作:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_below"/>
<item android:top="10px" android:right="10px" android:drawable="@drawable/shape_cover"/>
</layer-list>
因此,正如您在第二个
-元素中看到的,我设置了padding(顶部和右侧)。在这之后一切都正常了
谢谢。Lyobomyr的答案是可行的,但这里应用了相同的解决方案,但没有创建新的可绘制文件的开销,从而最大限度地减少了文件混乱: anon在上述SO答案上复制/粘贴anwser:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:left="6dp"
android:right="6dp">
<shape android:shape="rectangle">
<gradient android:startColor="#ccd0d3"
android:centerColor="#b6babd"
android:endColor="#ccd0d3"
android:height="1px"
android:angle="0"/>
</shape>
</item>
</layer-list>
正如一些评论所提到的,最好的方法是将
包装在
元素中,并在那里设置填充。但是,还有其他可用的选项,详见下面的链接。乙二醇
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="8dp"
android:right="8dp"
android:top="8dp"
android:bottom="8dp">
<shape android:shape="rectangle">
...
</shape>
</item>
</layer-list>
...
根据需要,您可以使用以下任意可绘制类型,而不是使用图层列表:
- 图层列表
- 选择器
- 级别列表
- 过渡
- 达斯汀的评论
- 亚赫尔的回答
- user924的评论
- 我这样解决了这个问题:
<shape android:shape="oval" >
<stroke android:width="4dp" android:color="@android:color/transparent" />
<solid android:color="@color/colorAccent" />
</shape>
刚刚添加了一个透明笔划。您可以尝试插入:
<?xml version="1.0" encoding="UTF-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetBottom="2dp"
android:insetLeft="1dp"
android:insetRight="20dp"
android:insetTop="20dp">
<shape android:shape="rectangle">
<stroke
android:width="1dp"
android:color="#ffffff"
android:dashWidth="2dp" />
<solid android:color="@color/button_white_cover" />
<corners android:radius="11dp" />
</shape>
</inset>
您好,我不知道如何将此解决方案应用于此问题。我有一个按钮,使用形状和设置adnroid:top和android:right没有效果。我该如何解决这个问题?谢谢。我想柳波穆尔说的是这样做,这对我来说很有效,但角落总是有不透明的白色背景,导致显示问题(很抱歉评论中的格式!):也离题,但可能有用:如果你使用的可绘制颜色只是一种颜色,你可以像android:drawable=“@color/divider”那样书写也但这在旧设备上会中断。我在2.2上测试了它,结果它坏了。不确定它在哪个级别可以接受。实际上,
接受子可绘制项(尽管没有明确的文档记录)。这就是在单个xml中实现这种行为的方法。即使在七年后,这个答案似乎也是正确的。
到底是干什么的?谢谢你的回答,雅赫尔,但记住不要只发布链接答案。始终在回答中提供所有必要的信息,因为链接内容可能会更改或变得无效。编辑的回答上述片段不正确。你仍然需要在标签“item”周围有一个图层列表。是的,你没有提到
@user924我不确定你的观点是什么。如果可以满足自己的目的,可以将项目包含在中,但这对于原始问题或传达一般解决方案(即将内容嵌套在中)都不是必需的。我的意思是,最好给出一个示例,您可以在不使用版本的情况下复制和运行,但在这种情况下无法解决(因为它应该在里面)@ USE924,我现在明白你的意思,非常感谢你指出这个问题并帮助改进答案。我已经更新了代码示例,并添加了关于可用的可绘制类型的注释,但是我认为这是一个黑客: