2017-05-29 85 views
0

我想为我的android按钮创建一个奇特的渐变边框。我用一个图层列表和一些渐变创建了一个drawable,并且预览效果很好。但是当我试图将该drawable应用到我的按钮时,它看起来并不像预览中的样子。我希望drawable可以伸展和缩放以适应我的按钮,但似乎并没有这样做。Android为什么我的图层列表可绘制缩放比例不适合我的按钮?

谁能告诉我我做错了什么?

这里是我的绘制:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
     <shape android:shape="rectangle"> 
      <corners android:radius="1dp"/> 
      <solid android:color="@color/colorLightGray"/> 
      <size android:width="40dp" android:height="10dp"/> 
     </shape> 
    </item> 
    <item android:left="38dp"> 
     <shape android:shape="rectangle"> 
      <corners 
        android:topRightRadius="1dp" 
        android:bottomRightRadius="1dp"/> 
      <gradient 
       android:endColor="@color/colorDarkGreen" 
       android:startColor="@color/colorLightGray" 
       android:type="linear"/> 
     </shape> 
    </item> 
    <item android:right="38dp"> 
     <shape android:shape="rectangle"> 
      <corners 
        android:topLeftRadius="1dp" 
        android:bottomLeftRadius="1dp"/> 
      <gradient 
        android:endColor="@color/colorLightGray" 
        android:startColor="@color/colorDarkGreen" 
        android:type="linear"/> 
     </shape> 
    </item> 
    <item android:bottom="8dp"> 
     <shape android:shape="rectangle"> 
      <corners 
        android:topLeftRadius="1dp" 
        android:topRightRadius="1dp"/> 
      <gradient 
        android:endColor="@color/colorLightGray" 
        android:startColor="@color/colorDarkGreen" 
        android:angle="270" 
        android:type="linear"/> 
     </shape> 
    </item> 
    <item android:top="8dp"> 
     <shape android:shape="rectangle"> 
      <corners 
        android:bottomLeftRadius="1dp" 
        android:bottomRightRadius="1dp"/> 
      <gradient 
        android:endColor="@color/colorLightGray" 
        android:startColor="@color/colorDarkGreen" 
        android:angle="90" 
        android:type="linear"/> 
     </shape> 
    </item> 
    <item 
      android:bottom="8dp" 
      android:right="38dp"> 
     <shape android:shape="rectangle"> 
      <corners android:topLeftRadius="1dp"/> 
      <gradient 
        android:endColor="@color/colorDarkGreen" 
        android:centerColor="@color/colorDarkGreen" 
        android:startColor="@color/colorLightGray" 
        android:centerX="100%" 
        android:centerY="100%" 
        android:gradientRadius="200%" 
        android:type="radial"/> 
     </shape> 
    </item> 
    <item 
      android:bottom="8dp" 
      android:left="38dp"> 
     <shape android:shape="rectangle"> 
      <corners android:topRightRadius="1dp"/> 
      <gradient 
        android:endColor="@color/colorDarkGreen" 
        android:centerColor="@color/colorDarkGreen" 
        android:startColor="@color/colorLightGray" 
        android:centerX="0%" 
        android:centerY="100%" 
        android:gradientRadius="200%" 
        android:type="radial"/> 
     </shape> 
    </item> 
    <item 
      android:top="8dp" 
      android:left="38dp"> 
     <shape android:shape="rectangle"> 
      <corners android:bottomRightRadius="1dp"/> 
      <gradient 
        android:endColor="@color/colorDarkGreen" 
        android:centerColor="@color/colorDarkGreen" 
        android:startColor="@color/colorLightGray" 
        android:centerX="0%" 
        android:centerY="0%" 
        android:gradientRadius="200%" 
        android:type="radial"/> 
     </shape> 
    </item> 
    <item 
      android:top="8dp" 
      android:right="38dp"> 
     <shape android:shape="rectangle"> 
      <corners android:bottomLeftRadius="1dp"/> 
      <gradient 
        android:endColor="@color/colorDarkGreen" 
        android:centerColor="@color/colorDarkGreen" 
        android:startColor="@color/colorLightGray" 
        android:centerX="100%" 
        android:centerY="0%" 
        android:gradientRadius="200%" 
        android:type="radial"/> 
     </shape> 
    </item> 
</layer-list> 

这里是我的按钮的XML:

<Button 
      android:id="@+id/add_some_stuff" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@drawable/gradient_border" 
      android:textAllCaps="false" 
      android:textStyle="normal" 
      android:textSize="@dimen/settings_text_size" 
      android:textColor="@color/colorSettingsText" 
      android:text="@string/add_some_stuff"/> 

下面是预览显示: The preview

这里是我实际看到: enter image description here

+0

我没有时间找到答案,但布局在40dpx10dp的按钮上工作。 –

回答

0

您的可绘制大小是静态定义的,并且在它是视图的背景时不会正确调整大小以进行调整。层列表属性android:width,android:height,android:left等都必须用特定的密度像素大小来定义。一旦您的视图不再符合该尺寸,它将不适合绘图板(这发生在使用match_parentwrap_content时)。如果您必须使用动态大小调整(我建议),那么我会使用矢量图而不是layer-list

相关问题