向 EditText 字段添加阴影效果

Posted

技术标签:

【中文标题】向 EditText 字段添加阴影效果【英文标题】:Add drop shadow effects to EditText Field 【发布时间】:2012-06-06 17:18:30 【问题描述】:

我正在尝试设计一个具有像这样的阴影(底部和右侧)的 EditText 字段

尝试谷歌搜索并搜索了许多 SO 讨论,但所有讨论都是针对 TextView 而不是 EditText。

这是我向输入文本添加阴影而不是向文本字段添加阴影的代码

<EditText android:id="@+id/txtpin" 
        android:maxLength="4" 
        android:layout_marginLeft="10dp" 
        android:layout_ 
        android:gravity="center_horizontal" 
        android:inputType="textPassword" 
        android:longClickable="false" 
        android:layout_ 

        android:shadowColor="@color/Black"
        android:shadowDx="1.2"
        android:shadowDy="1.2"
        android:shadowRadius="1.5" 

        android:background="@color/White">
            <requestFocus></requestFocus>
        </EditText>

我想它需要一些可绘制的自定义 xml 视图,但没有得到确切的想法。 实现这一目标的逻辑是什么。

任何帮助将不胜感激。

【问题讨论】:

您可以设置 EditText 的背景图片 .... 在您的 Question 中显示的图片 @gtumca-MAC.. 是的,谢谢,但我只想编写代码,顺便说一句,现在解决了!! @RDC 我尝试了您的解决方案,但我的情况是效果应该是向内的。对此***.com/questions/19901676/… 的任何解决方案 @sur007 我猜你应该寻找Inner Shadow,请参阅This Solutionthis also 可能会对你有所帮助。 【参考方案1】:

嗯.. @Shalini 的回答以这种方式帮助了我,但我仍然有另一种方法可以使用 EditText Field 实现 2D 阴影,我将与您分享。

我们需要为 EditText 创建具有三层的自定义 XML 视图, 底部阴影和右侧阴影

下面是我的代码。

res/drawable/edittext_shadow.xml

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

<!-- most important is order of layers -->

    <!-- Bottom right side 2dp Shadow -->
    <item >
        <shape android:shape="rectangle">
            <solid android:color="#000000" />           
        </shape>
    </item>

    <!-- Bottom 2dp Shadow -->
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#000000" />   
        </shape>
    </item>

    <!-- White Top color -->
    <item android:bottom="3px" android:right="3px">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />           
        </shape>
    </item> 
</layer-list>

现在我们可以使用“Background”属性将此阴影视图设置为我们的 TextField

喜欢这个

res/layout/main.xml

<EditText android:layout_ 
            android:id="@+id/txtpin"  
            android:maxLength="4" 
            android:layout_ 
            android:gravity="center_horizontal" 
            android:longClickable="false" 
            android:padding="2dp"

            android:inputType="textPassword|number" 
            android:password="true" 
            android:background="@drawable/edittext_shadow" 
            android:layout_weight="0.98" 
            android:layout_marginLeft="15dp">
                <requestFocus></requestFocus>
   </EditText>

结果屏幕就像我在上面发布的问题一样。

感谢 SO,分享知识。

【讨论】:

上述答案在功能上是正确的,但不需要层列表中的第二项。对于两个阴影,第一项就足够了。【参考方案2】:

这对我有用..

   <EditText 
       android:layout_ 
       android:shadowRadius="2"  
       android:shadowColor="#0000ff"
       android:shadowDx="2"
       android:shadowDy="4" 
       android:id="@+id/EditText01" 
       android:layout_ />

希望对你有帮助:)

【讨论】:

您的解决方案对我不起作用。它将阴影添加到文本(EditText 内容)而不是 EditText 组件的边框。我错过了什么吗?【参考方案3】:

来自Shadow Effect for a Text in Android?,也许你会考虑使用

android:shadowColor, 
android:shadowDx,
android:shadowDy,
android:shadowRadius;

或者:

setShadowLayer()

【讨论】:

这个线程我已经检查过(见我的代码)它的 TextView..anywaythanx!! 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。 嗨@Gabriele!老实说,我在 3 年前回答了这个问题,希望赢得声誉。我将编辑这个答案。谢谢!

以上是关于向 EditText 字段添加阴影效果的主要内容,如果未能解决你的问题,请参考以下文章

CSS3阴影效果

WPF 窗体阴影效果!!!

向浮动 UICollectionView 标头添加阴影

Java 为 PPT 中的图形添加阴影效果

duilib窗体阴影偏移情况

将阴影添加到 ListView(图标模式)?