【问题标题】:Android - Elevation not workingAndroid - 海拔不工作
【发布时间】:2016-05-22 16:05:13
【问题描述】:

我正在迁移 Android 应用以使用 Material Design。为了验证我是否做的一切都正确,我创建了一个空活动来测试一些 Material Design 元素(FAB、凸起的按钮、视图上的高度、卡片、列表等......)。

按钮看起来不错,但视图的高度却不是。我在互联网上搜索了答案,但没有找到。我没有使用填充、透明背景等。这是我的代码:

values-v21/styles.xml:

<resources>

    <style name="AppThemeNoActionBar" parent="AppTheme">
        <item name="android:navigationBarColor">@color/colorPrimary</item>
    </style>

    <style name="AppTheme" parent="MyMaterialTheme.Base">
        <item name="android:windowContentTransitions">true</item>
        <item name="android:windowAllowEnterTransitionOverlap">true</item>
        <item name="android:windowAllowReturnTransitionOverlap">true</item>
        <item name="android:windowSharedElementEnterTransition">@android:transition/move</item>
        <item name="android:windowSharedElementExitTransition">@android:transition/move</item>
    </style>

    <style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    <style name="Button" parent="Base.Widget.AppCompat.Button.Colored">
        <item name="android:backgroundTint">@color/colorAccent</item>
    </style>

    <color name="colorPrimary">#E88768</color>
    <color name="colorPrimaryDark">#CC785C</color>
    <color name="colorAccent">#E88768</color>
    <color name="textColorPrimary">#000000</color>
    <color name="windowBackground">#FFFFFF</color>
    <color name="navigationBarColor">#E88768</color>
</resources>

layout-v21/start_activity.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/white"
                xmlns:app="http://schemas.android.com/apk/res-auto">
    <HorizontalScrollView
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_alignParentStart="true"
        android:elevation="12dp"
        android:translationZ="12dp"
        android:id="@+id/scrollView">

    </HorizontalScrollView>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_below="@+id/scrollView">

    </LinearLayout>

</RelativeLayout>

谁能帮帮我?

【问题讨论】:

  • 我并没有过多地处理高程或 z 轴平移,但是高程是否会添加到平移?如果没有,您的translationZ 和elevation 会不会相互抵消。再一次,根本没有真正搞砸这一点。更多的是一个问题而不是一个建议:P

标签: android android-layout material-design android-elevation


【解决方案1】:

如果elevation 不起作用,您可以使用将内容放入CardView 然后设置的技巧:

card_view:cardElevation="2dp"

或者:

card_view:cardCornerRadius="4dp"

对于角落。

这是最好的方法,但是您可能会在 Android Studio 的 Preview 上看到 elevations,但实际上,编译时它们都不起作用该应用程序或它正在模拟器或真实设备上运行。因此,在这些情况下,最好使用CardView

例如:

<android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="true"
        android:foreground="?android:attr/selectableItemBackground"
        card_view:cardCornerRadius="4dp"
        card_view:cardElevation="2dp">

        <HorizontalScrollView
            android:id="@+id/scrollView"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_alignParentStart="true"
            android:translationZ="12dp">

        </HorizontalScrollView>
    </android.support.v7.widget.CardView>

【讨论】:

  • 这项工作,但这是一种解决方法,对吧?在 Android 示例中,他们不应用“CardView”来创建阴影..
  • 是的,例如,您可能想在 preLollipop 上使用Button 并带有类似 googleplay 设计的阴影,但是您看不到按钮阴影或其他东西,那么我们需要使用CardView 就像我的回答一样。请考虑将其作为另一种方法:)
【解决方案2】:

尝试为您的HorizontalScrollView 设置背景颜色/可绘制:

android:background="@android:color/white"

这似乎是绘制阴影所必需的。

【讨论】:

  • 我认为它实际上是一个特性:) 原因是如果你不指定背景,它是隐式透明的。由高度属性创建的阴影适应具有透明度的背景,这意味着阴影尊重例如圆角。因此,如果背景完全透明,则不会产生阴影。
猜你喜欢
  • 2014-12-25
  • 2015-01-11
  • 1970-01-01
  • 2017-04-14
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-22
相关资源
最近更新 更多