Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 填充不';t影响<;形状>;在XML布局中_Android_User Interface - Fatal编程技术网

Android 填充不';t影响<;形状>;在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"

我试图在XML文件/布局中声明的
中设置填充。但无论我设置什么,都不会改变填充。如果我修改任何其他属性,我会在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,我现在明白你的意思,非常感谢你指出这个问题并帮助改进答案。我已经更新了代码示例,并添加了关于可用的可绘制类型的注释,但是我认为这是一个黑客: