具有不同角半径的可绘制形状背景的布局上的标高

Posted

技术标签:

【中文标题】具有不同角半径的可绘制形状背景的布局上的标高【英文标题】:Elevation on a layout which has a shape drawable background with different corner radii 【发布时间】:2018-04-02 11:05:00 【问题描述】:

我有一个列表项的布局,如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:layout_marginBottom="@dimen/spacing_very_small"
    android:layout_marginEnd="@dimen/spacing_large"
    android:layout_marginStart="64dp"
    android:layout_marginTop="@dimen/spacing_very_small">


    <LinearLayout
        android:minWidth="100dp"
        android:layout_
        android:layout_
        android:orientation="vertical"
        android:layout_alignParentEnd="true"
        android:background="@drawable/red_bubble"
        android:gravity="end"
        android:layout_margin="8dp"
        android:elevation="4dp"
        >

        <TextView
            android:id="@+id/content"
            android:layout_
            android:layout_
            android:lineSpacingMultiplier="1.1"
            android:paddingTop="@dimen/spacing_normal"
            android:paddingBottom="@dimen/spacing_small"
            android:paddingStart="@dimen/spacing_normal"
            android:paddingEnd="@dimen/spacing_normal"
            android:textColor="@color/white"
            android:text="TEST"/>

        <TextView
            android:id="@+id/date"
            android:layout_
            android:layout_
            android:textSize="12dp"
            android:gravity="end"
            android:paddingStart="@dimen/spacing_normal"
            android:paddingEnd="@dimen/spacing_normal"
            android:paddingBottom="@dimen/spacing_normal"
            android:textColor="@color/white"
            android:text="yesterday"/>

    </LinearLayout>
</RelativeLayout>

LinearLayout 的背景是红色和圆角的形状:

<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <solid android:color="@color/red"/>

    <corners android:bottomRightRadius="5dp" android:bottomLeftRadius="20dp"
    android:topLeftRadius="5dp" android:topRightRadius="5dp" />

</shape>

问题是,为什么当所有边缘都具有相同的半径时,仰角会起作用,并且存在阴影,但是当我更改其中一个角度的半径时(在这种情况下为左下角)阴影消失了?

这个问题有解决办法吗?

【问题讨论】:

尝试将您的形状指定为矩形而不是不指定,看看它在您的形状中是否像这样工作&lt;shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" &gt; 遗憾的是,它并没有改变任何东西。 你为什么不使用卡片视图而忘记在线性布局中设置的这个令人厌烦的高度,因为我确信 CardView 总是有效的 【参考方案1】:

您可能可以通过设置 ViewOutlineProvider 并通过路径传递相同的形状来取回它。

【讨论】:

以上是关于具有不同角半径的可绘制形状背景的布局上的标高的主要内容,如果未能解决你的问题,请参考以下文章

Android可绘制背景角不删除

Android布局边框隐藏背景角

具有透明背景的颤动角半径

具有渐变的可绘制视图背景在预览中正确显示但在模拟器中不正确

如何为我在 Android 中用作背景的可绘制对象添加圆角?

具有圆形内边缘的方形布局边框