小型宽视图的阴影在Android 5.0上看起来很奇怪,但在5.1

时间:2015-09-15 18:25:45

标签: android android-5.0-lollipop shadow android-elevation

如果我在Android 5.0的小视图上添加高程,阴影看起来很奇怪。但是,在Android 5.1上看起来还不错。例如,请查看以下比较图像(请单击以全分辨率查看):

Comparison between 5.0 and 5.1

在5.1上,阴影的形状是均匀的,而在5.0上,阴影的形状朝向屏幕的边缘变薄。视图越薄(即越小),效果越明显。

我不确定这是否是这两个版本的错误,但是我需要阴影来查看两个版本,就像它现在在5.1上看一样。

1 个答案:

答案 0 :(得分:1)

这是一个hacky,部分解决方法。阴影的形状取决于视图的高度,或者更确切地说,取决于轮廓的高度。所以我们要像这样设置自定义大纲:

view.setOutlineProvider(new ViewOutlineProvider() {
    @Override
    public void getOutline(final View view, final Outline outline) {
        outline.setRect(0, -128, view.getWidth(), view.getHeight());
    }
});

而不是-128选择任何足够大的数字(甚至更好,从资源加载维度值)。这是它的外观:

enter image description here

不幸的是,这个hack会导致在视图上方呈现奇怪的工件。但是,如果您在其上方有另一个视图(如工具栏),那么这些视图将无法显示。也许可以通过将视图放在单独的布局中并使用其边界来播放工件来剪切工件。