在安卓中为按钮添加阴影

5

我想在点击图像按钮时添加一种阴影效果。这是否可能?如何实现。

我有一个按钮,希望当我点击它时它看起来被按下。因此,我创建了一个新的XML文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:state_pressed="true"
    android:state_enabled="true"
    android:drawable="@color/btn_pushed" 
     />
<item
    android:drawable="@drawable/btn" />
</selector>

好的,它很好用,但我有50个按钮,我必须为它们制作新的图像。那是很多工作,有没有可能只是添加一些阴影或其他东西,使它看起来被按下了?


请明确您的问题。我无法理解它。 - TheFlash
请再读一遍。我在开头写了一个新问题。 - gabrjan
然后您想要为imagebutton添加阴影。我只知道如何将阴影应用于按钮。 - TheFlash
看这个主题,按钮也应该适用。https://dev59.com/0Wgv5IYBdhLWcg3wF89P - ztirom
哈哈,你回答的时候我已经找到解决方案了,只用了3分钟 :D - gabrjan
3个回答

5

我找到了一个解决方案,并将其添加在这里供读者参考。诀窍是使用。 我在这里找到了答案http://belencruz.com/2012/12/rounded-button-with-shadow-in-android/ 我的代码现在:

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


<item
    android:state_pressed="true"
    android:state_enabled="true"
    >
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:drawable="@drawable/btn" /> 
<item android:drawable="@color/transparent"/>


</layer-list>
</item>
<item
    android:drawable="@drawable/btn" />
</selector>

非常好用!


1
请注意:“不要。阴影永远不会被着色材料近似。” http://www.google.com/design/spec/what-is-material/material-properties.html#material-properties-physical-properties - Don Larynx

0

尝试将背景声明为阴影效果,将源声明为按钮图像:

   <ImageButton
        android:background="@android:drawable/dialog_holo_light_frame"
        android:src="@drawable/books"
   />

-1

上述解决方案对我来说不起作用。按钮的位置没有显示任何内容。以下是我的代码,它可以工作:

首先:在布局文件中添加:

android:background="@drawable/new_button"

第二步:创建new_button.xml文件,其中show3是图像文件。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true">
    <layer-list>
      <item android:left="4dp" android:top="4dp">
        <bitmap android:src="@drawable/show3"/>                
      </item>
    </layer-list>
  </item>
  <item>
    <layer-list>
      <!-- SHADOW LAYER -->
      <item android:left="4dp" android:top="4dp">
        <shape>
          <solid android:color="#66000000" />
          <corners android:radius="10dip"/>
        </shape>
      </item>
      <!-- CONTENT LAYER -->
      <item android:bottom="4dp" android:right="4dp">
        <bitmap android:src="@drawable/show3"/>            
      </item>
    </layer-list>
  </item>
</selector>

基本上需要将位图添加到项目中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接