Android - 海拔不工作
Android - Elevation not working
我正在迁移 Android 应用程序以使用 Material 设计。为了验证我所做的一切是否正确,我创建了一个空的 activity 来测试一些 Material 设计元素(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>
谁能帮帮我?
如果 elevation
不起作用,您可以使用一些技巧,例如将内容放入 CardView
,然后设置:
card_view:cardElevation="2dp"
Or:
card_view:cardCornerRadius="4dp"
For corners.
这是最好的方法,但是您可能会在 Android Studio 的预览中看到 elevations
,但实际上, 当您编译应用程序时,所有这些都不起作用,或者它在模拟器 或真实的 device.So 上 运行,在这些情况下,最好使用 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>
尝试为您的 HorizontalScrollView
:
设置背景颜色/可绘制对象
android:background="@android:color/white"
这似乎是绘制阴影所必需的。
我正在迁移 Android 应用程序以使用 Material 设计。为了验证我所做的一切是否正确,我创建了一个空的 activity 来测试一些 Material 设计元素(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>
谁能帮帮我?
如果 elevation
不起作用,您可以使用一些技巧,例如将内容放入 CardView
,然后设置:
card_view:cardElevation="2dp"
Or:
card_view:cardCornerRadius="4dp"
For corners.
这是最好的方法,但是您可能会在 Android Studio 的预览中看到 elevations
,但实际上, 当您编译应用程序时,所有这些都不起作用,或者它在模拟器 或真实的 device.So 上 运行,在这些情况下,最好使用 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>
尝试为您的 HorizontalScrollView
:
android:background="@android:color/white"
这似乎是绘制阴影所必需的。