2016-03-15 58 views
3

我做了一個按鈕,繪製的是由一個梯度形狀和固體形狀,無論是在層列表如下:無法獲取圓角爲我的層列表繪製

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:height="25dp"> 
     <shape android:shape="rectangle" > 
      <gradient 
       android:angle="90" 
       android:startColor="@color/greyDark1" 
       android:endColor="@color/greyDark2"/> 
     </shape> 
    </item> 
    <item android:top="25dp" android:height="25dp"> 
     <shape android:shape="rectangle" > 
      <solid android:color="@color/black" /> 
     </shape> 
    </item> 
</layer-list> 

但我無法找到正確的角落。 我需要圍繞整個形狀的圓角,但不是在內部(所以topRight和topLeft選擇上半部分,bottomRight和bottomLeft選擇下半部分)。

如果我用<corners android:radius="8dp">設置了兩半,上半部分的底角和下半部分的頂角都變圓了,這不是我想要的。

如果我設置爲<corners android:topRightRadius="8dp" android:topLeftRadius"8dp">上半部分和<corners android:bottomRightRadius="8dp" android:bottomLeftRadius"8dp">的下半部分上半部分將是繪製的全尺寸使得梯度不能正常工作和底角是相同的顏色了。

這裏是什麼,我試圖完成的圖像:

ButtonDrawable

是否有人知道一個解決的辦法?

編輯:

我已經得到了一些答案,我已經麻木了,但可悲的是,他們似乎並不管用。

這些問題的答案,我從bofredo得到和Bhuvnesh Chasta導致了這樣的事情:

ButtonDrawable wrong (looks a bit like a burger)

而且我從curiousMind得到了答案看起來相當不錯,但不是我的目標:

ButtonDrawable wrong (although it looks pretty nice)

最後編輯:

我已經和我一起工作的人討論過這個問題,我們都同意讓它看起來像這樣並不重要,所以我們用了一種純色。

我仍然要感謝所有幫助過我的人,所有現在的答案都會得到讚揚,我會接受waqaslam的回答,因爲他來到了我想要的地方。

+0

你可以根據需要顯示圖像嗎? – curiousMind

+0

http://stackoverflow.com/q/15100660/5093666 @丹尼斯試試這個 – curiousMind

+0

@curiousMind我在編輯中添加了一個圖像,我真的很想如果我可以設置這些角落只是android xml –

回答

2

我認爲這是可以達到使用XML所需繪製最接近的一次。

enter image description here

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <shape android:shape="rectangle"> 
     <corners android:radius="2dp"/> 
     <gradient android:startColor="#4e4e4e" android:centerColor="#626262" android:endColor="@android:color/transparent" android:angle="270" /> 
    </shape> 
</item> 
<item> 
    <shape android:shape="rectangle"> 
     <corners android:radius="2dp"/> 
     <gradient android:startColor="@android:color/transparent" android:centerColor="#4c4c4c" android:endColor="#1c1c1c" android:angle="270" /> 
    </shape> 
</item> 

也許你應該使用9-patch drawable得到確切的效果。

1

試試這個。你應該使用角落形狀的角落。

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item > 
    <shape 
     android:shape="rectangle"> 
     <solid android:color="#b2d1d1ef" /> 
     <corners android:radius="1dp"/> 
    </shape> 
</item> 
<item android:right="1dp" android:left="1dp" android:bottom="2dp" android:top="1dp"> 
    <shape 
     android:shape="rectangle"> 
     <solid android:color="#FFFFFF"/> 
     <corners android:radius="5dp"/> 
    </shape> 
</item> 

+1

這似乎沒有真正的工作(它有點看起來像一個漢堡),結果是在我最後編輯 –

1

我前一段時間藏漢有這個問題。你可以找到這個問題HERE

這是從工作答案:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" > 
    <solid android:color="@color/cocus_orange"/> 
    <corners android:radius="15px"/> 
    <padding android:left="1dp" android:top="1dp" android:right="1dp" android:bottom="1dp" /> 
</shape> 
</item> 
<item> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <gradient android:angle="90" 
     android:startColor="#880f0f10" 
     android:centerColor="#880d0d0f" 
     android:endColor="#885d5d5e"/> 
     <corners 
      android:radius="15px" /> 
</shape> 
</item> 
</layer-list> 
+0

這似乎並沒有真正的工作(它看起來像一個漢堡),結果是在我的最後編輯 –

+0

這非常棘手。也許有爲此定製的解決方案。 – bofredo

1

嘗試這樣

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

<gradient 
    android:angle="270" 
    android:endColor="#000" 
    android:startColor="#787575" /> 

<corners android:radius="8dip" /> 
+0

這似乎沒有真正的工作(雖然它看起來很漂亮),結果是在我上次編輯 –

+0

@ DennisvanOpstal如果你想從layerlist做,然後根據我的知識是不可能的,因爲兩者都是不同的列表,你可以將它包裹在一個半徑內並給出半徑... – curiousMind

+0

這可能是真的,但是我也不知道沒有圖層列表會如何工作,因爲如果我使用您的代碼,實體零件甚至不會顯示 –