【问题标题】:android:How to show drop shadow on an EditText view?android:如何在 EditText 视图上显示阴影?
【发布时间】:2019-08-13 00:10:00
【问题描述】:

我应用了海拔属性和可绘制背景,为EditText View 提供了圆形轮廓,但没有预期的阴影。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="20dp"
    android:background="#FAFAFA"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/editText"
        android:layout_width="0dp"
        android:layout_height="51dp"
        android:layout_marginTop="52dp"
        android:elevation="20dp"
        android:background="@drawable/rounded_edittext"
        android:drawableStart="@drawable/ic_search_icon"
        android:drawableLeft="@drawable/ic_search_icon"
        android:ems="10"
        android:inputType="textPersonName"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView" />
</android.support.constraint.ConstraintLayout>

以及背景rounded_edittext.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#FFFFFF"/>
    <corners
        android:bottomRightRadius="27.5dp"
        android:bottomLeftRadius="27.5dp"
        android:topLeftRadius="27.5dp"
        android:topRightRadius="27.5dp"/>
    <stroke android:color="#66000000" android:width="0.5dp"/>
</shape>

更新

以下是原始设计。

边框颜色#000000 opacity 10(0~100) 阴影颜色 #000000 不透明度 5(0~100)

【问题讨论】:

标签: android


【解决方案1】:

用以下代码替换你的rounded_edittext.xml:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@android:color/darker_gray" />
            <corners android:radius="27.5dp" />
        </shape>
    </item>
    <item
        android:bottom="2dp"
        android:left="1dp"
        android:right="1dp">
        <shape android:shape="rectangle">
            <solid android:color="#FFFFFF" />
            <corners android:radius="27.5dp" />
            <stroke
                android:width="0.5dp"
                android:color="#66000000" />
        </shape>
    </item>
</layer-list>

另外,将 EditText 中的 android:elevation="20dp" 替换为 android:elevation="4dp"

【讨论】:

    【解决方案2】:

    去这里:Android View shadow

    或者,如果您想在视图下放置阴影,请添加以下内容

    在您的 Layout.xml 中

    <View android:layout_width="match_parent"
        android:layout_height="5dp"
        android:background="@drawable/dropshadow"/>
    

    drawble/dropshadow.xml >

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <gradient android:startColor="@android:color/transparent"
            android:endColor="#88333333"
            android:angle="90"/>
    </shape>
    

    【讨论】:

    • 在这种情况下,您不能直接应用渐变作为背景。您需要在&lt;layer-list&gt; 中添加渐变背景为&lt;item&gt;
    • 我不建议将其作为 EditText 背景,您必须将其添加到 的背景中才能在特定视图下产生一些效果,所以...我也不是使用多个项目,因此无需放置 ,通过放入一些 xml 文件并首先使用它来尝试此代码。
    猜你喜欢
    • 2022-12-13
    • 2014-02-08
    • 1970-01-01
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    相关资源
    最近更新 更多