在 XML 布局中,填充不会影响 < form >

我试图在 XML 文件/布局中声明的 <shape>中设置填充。但无论我设置了什么,都不会改变与填充物相关的内容。如果我修改任何其他属性,我会看到对 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>
95056 次浏览

我终于解决了填充物的问题。

所以这里的填充对形状没有影响。取而代之的是,您将不得不在使用它的其他绘图工具中应用填充。因此,我有一个使用形状的绘图,我在那里做以下工作:

<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>

So, as you can see in the second <item>-element I set padding (top and right). And after this everything works.

谢谢。

Lyobomyr 给出的答案是可行的,但是这里有一个相同的解决方案,但是没有创建一个新的绘图工具的开销,因此最小化了文件的混乱:

Https://stackoverflow.com/a/3588976/578746

以匿名方式将答案复制/粘贴在以上答案上:

<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>

正如一些注释中提到的,最好的方法是将 <shape>包装在一个 <item>元素中,并在那里设置填充。然而,还有其他可供选择的方法,详见下面的链接。例句

<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>

根据您的需要,您可以使用以下任何可绘制类型,而不是使用层列表:

  • 分层清单
  • 选择器
  • 等级名单
  • 过渡期

有关可绘制类型的详细信息,请参阅 this android documentation

资料来源:

我是这样解决这个问题的:

<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>