向 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 Solution 和this 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 字段添加阴影效果的主要内容,如果未能解决你的问题,请参考以下文章