在SDK Manager的Android 5.0示例中,有ElevationBasic
示例。它显示了两个View
对象:一个圆形和一个正方形。该圈子已android:elevation
设置为30dp
:
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<View
android:id="@+id/floating_shape"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginRight="40dp"
android:background="@drawable/shape"
android:elevation="30dp"
android:layout_gravity="center"/>
<View
android:id="@+id/floating_shape_2"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginLeft="25dp"
android:background="@drawable/shape2"
android:layout_gravity="center"/>
</FrameLayout>
在Nexus 9上,按原样运行示例,我们在圆圈上出现了阴影:
如果将小部件类更改为Button
,而其他所有属性保持原样,则将丢失圆上的阴影:
问题:
为什么
android:elevation
行为会改变?这不能归因于背景,因为在两种情况下背景都是相同的。哪些类支持
android:elevation
,哪些不支持?例如,使用TextView
代替View
或Button
仍然给我们阴影,因此,行为的这种变化不是在TextView
层次上引入的,而是在Button
层次上引入的。从昨天的问题中可以看出,我们如何
android:elevation
在a上获得荣誉Button
?android:allowElevationToWorkAsDocumented="true"
我们必须在主题中添加一些价值吗?