1

如果我在 Android 5.0 上为一个小而宽的视图添加高程,阴影看起来真的很奇怪。但是,在 Android 5.1 上看起来还可以。举个例子,看看下面的对比图(请点击查看全分辨率):

5.0 和 5.1 的比较

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

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

4

1 回答 1

1

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

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

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

在此处输入图像描述

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

于 2015-09-15T19:22:08.880 回答