2017-05-29 30 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

相關問題