2015-09-24 85 views
0

在這裏,我想問一個簡單的問題,讓我這麼迷惑, 我已經開發了一個Android應用程序,我想使用材料設計主題。如何在Android按鈕上創建陰影(材質設計)

但是,當我嘗試在RaisedButton下編碼陰影時,它不起作用。 我的意思是它只是按鈕而不是陰影。

請高手幫幫我,有沒有簡單的方法來製作這個影子? 謝謝

注意。這是我的custon_button.xml

<item android:state_pressed="true" > 
    <shape> 
     <solid 
      android:color="@color/solidpress" 
      /> 
     <stroke 
      android:width="1dp" 
      android:color="@color/strokepress" /> 
     <corners 
      android:radius="2dp" /> 
     <padding 
      android:left="5dp" 
      android:top="10dp" 
      android:right="1dp" 
      android:bottom="10dp" /> 
    </shape> 
</item> 

<item android:state_focused="true" > //focused fuck shit man 
    <shape> 
     <solid 
      android:color="@color/solidfocus" 
      /> 
     <stroke 
      android:width="3dp" 
      android:color="@color/strokefocus" /> 
     <corners 
      android:radius="2dp" /> 
     <padding 
      android:left="5dp" 
      android:top="10dp" 
      android:right="5dp" 
      android:bottom="10dp" /> 
    </shape> 
</item> 

<item> // normal 

    <shape> 
     <solid 
      android:color="@color/solidnormal" /> 
     <stroke 
      android:width="1dp" 
      android:color="@color/strokenormal" /> 
     <corners 
      android:radius="2dp" /> 
     <padding 
      android:left="5dp" 
      android:top="10dp" 
      android:right="1dp" 
      android:bottom="10dp" /> 
    </shape> 
</item> 

和我的代碼應用到我的活動與

android:background="@drawable/custom_button 

回答

2

請看看這個

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_pressed="false"><layer-list> 
      <item><shape> 
        <gradient android:angle="270" android:centerColor="#00c0f0" android:endColor="#036b86" android:startColor="#01bff3"></gradient> 

        <corners android:radius="5dp" /> 
       </shape></item> 
      <item android:bottom="3dp"><shape> 
        <gradient android:angle="270" android:centerColor="#00c0f0" android:endColor="#01bff3" android:startColor="#01bff3"></gradient> 

        <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> 

        <corners android:radius="5dp" /> 
       </shape></item> 
     </layer-list></item> 

    <item android:state_pressed="true"><layer-list> 
      <item ><shape> 
        <gradient android:angle="270" android:centerColor="#00c0f0" android:endColor="#01bff3" android:startColor="#036b86"></gradient> 

        <corners android:radius="5dp" /> 
       </shape></item> 
      <item android:top="3dp"><shape> 
        <gradient android:angle="270" android:centerColor="#00c0f0" android:endColor="#01bff3" android:startColor="#01bff3"></gradient> 

        <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> 

        <corners android:radius="5dp" /> 
       </shape></item> 
     </layer-list></item> 

</selector> 
+0

yea broo,我認爲它的工作, 現在只是如何添加表面反應的按鈕? – iWayan

+0

你可以採取這個https://github.com/traex/RippleEffect –

+0

哦,是啊,我忘了一件事,我怎麼能設置深度和大小的影子? – iWayan

1

shadow.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item> 
    <layer-list> 
     <item android:right="5dp" android:top="5dp"> 
      <shape> 
       <corners android:radius="3dp" /> 
       <solid android:color="#D6D6D6" /> 
      </shape> 
     </item> 
     <item android:bottom="2dp" android:left="2dp"> 
      <shape> 
       <gradient android:angle="270" 
        android:endColor="#E2E2E2" android:startColor="#BABABA" /> 
       <stroke android:width="1dp" android:color="#BABABA" /> 
       <corners android:radius="4dp" /> 
       <padding android:bottom="10dp" android:left="10dp" 
        android:right="10dp" android:top="10dp" /> 
      </shape> 
     </item> 
    </layer-list> 
</item> 

</selector> 

這個代碼添加到您的按鈕

android:background="@drawable/shadow" 

看一看這個暗影的材質種類:Shadow Background Android

+0

我有嘗試這個代碼,但它看起來像一個古老的按鈕樣式,我的意思是有一個梯度,但我尋找的是材料設計的按鈕樣式,。 ANW謝謝你回答我的問題:) – iWayan

1

如果拉詹KS'答案簡化版,工作,你可以嘗試在一個包裹按鈕CardView(android.support.v7.widget.CardView),並使用它的app:cardElevation屬性爲CardView提供一些標高。

<android.support.v7.widget.CardView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:cardElevation="4dp" 
    app:cardPreventCornerOverlap="false"> 

    <Button /> 

</android.support.v7.widget.CardView> 
相關問題