为了账号安全,请及时绑定邮箱和手机立即绑定

Android 5.0 android:elevation适用于View,但不适用于Button?

Android 5.0 android:elevation适用于View,但不适用于Button?

倚天杖 2019-10-08 15:08:40
在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"我们必须在主题中添加一些价值吗?
查看完整描述

3 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

根据我在Lollipop设备上运行的Appcompat v7的经验,Button可以使用默认功能(如波纹效果,点击时的高程和z动画),但是如果android:background在xml元素中设置了个性化属性(如颜色或选择器),则会错过它们。


查看完整回答
反对 回复 2019-10-08
?
PIPIONE

TA贡献1829条经验 获得超9个赞

这是因为您正在手动设置按钮的背景,它将替换其所有效果。


从AppCompat的23.0.0版本开始,有一个新的Widget.AppCompat.Button.Colored样式,该样式将主题的colorButtonNormal用作禁用的颜色,将colorAccent用作启用的颜色。


    <Button

  ...

  style="@style/Widget.AppCompat.Button.Colored" />

如果您想要的颜色与指定的颜色不同,则可以创建一个新主题并将其通过应用于按钮android:theme。然后,您可以在希望获得相同效果的所有按钮上使用此主题。


查看完整回答
反对 回复 2019-10-08
  • 3 回答
  • 0 关注
  • 783 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信