Android - SpotShadowAlpha 仅适用于线性布局

1 android android-layout android-styles android-shape

我正在使用线性布局的高程属性,但阴影太亮。我只需要一个较暗的阴影用于线性布局。

我添加android:spotShadowAlpha到我的styles.xml. 它有效,但不仅仅适用于线性布局。每个视图都有一个较暗的阴影。

样式.xml

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="android:ambientShadowAlpha">0</item>
        <item name="android:spotShadowAlpha">0.55   </item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

线性布局在activity_main.xml

<LinearLayout
        android:id="@+id/linl"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:layout_marginStart="55dp"
        android:layout_marginTop="208dp"
        android:layout_marginEnd="56dp"
        android:layout_marginBottom="209dp"
        android:background="@drawable/custom_buttom"
        android:elevation="70dp"
        android:orientation="horizontal"

        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

背景@drawable/custom_buttom

<?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:radius="999dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

ott*_*tic 5

免责声明:仅适用于 API 28 及以上版本

我知道这个问题有点老了,但我遇到了同样的问题。这家伙有一个很好的解决方案。本质上你设置android:ambientShadowAlphaandroid:spotShadowAlpha1。那么您可以使用SetOutlineAmbientShadowColor包含SetOutlineSpotShadowColoralpha 值的值来逐项设置它。对于其他所有内容,这些充当具有系统默认 alpha 值的默认阴影颜色:

<color name="defaultOutlineAmbientShadowColor">#0A000000</color> <color name="defaultOutlineSpotShadowColor">#30000000</color>

这些在 styles.xml 中设置:

<item name="android:ambientShadowAlpha">1</item> <item name="android:outlineAmbientShadowColor">@color/defaultOutlineAmbientShadowColor</item> <item name="android:spotShadowAlpha">1</item> <item name="android:outlineSpotShadowColor">@color/defaultOutlineSpotShadowColor</item>