Android:带有圆角的 ScrollView。儿童视野在角落流血

Posted

技术标签:

【中文标题】Android:带有圆角的 ScrollView。儿童视野在角落流血【英文标题】:Android: ScrollView with rounded corners. Child views bleeding out over corners 【发布时间】:2013-05-15 05:00:19 【问题描述】:

我有一个带圆角的滚动视图。在 ScrollView 中是一个 LinearLayout,它具有相同的圆角可绘制对象。这一切都很好。我有一个带有圆形边缘的滚动容器。我正在向具有方形边缘的 LinearLayout(vertical) 添加子级。我正在寻找一种方法让它们在 LL 中间保持方形,但在它们接近底部或顶部时被裁剪。基本上,我希望它们不会像现在这样在圆角处流血。

我最初的想法是在 LL 的边缘周围绘制 canvas.clipPath,希望不会在此处绘制内部子级。那没有成功。有什么想法吗?

【问题讨论】:

由于您在这里讨论图像,如果您能附上一些示意图,说明您的期望、您目前取得的成就等,将会非常有帮助。 【参考方案1】:

我建议使用Frame Layout。您可以做的是有一个方形 ScrollView,但添加一个圆形框架作为掩码。它的内存效率也应该更高。只需将蒙版混合到背景中,就可以了。

【讨论】:

感谢 dberm22。是的,我见过类似的解决方案,但是我的背景在不断变化,所以我无法将其融入其中。我只是想找到一种方法来剪掉角落并告诉 LL 不要画画除此之外。嗯。这是一个粘性的。【参考方案2】:

如果您需要您的LinearLayout 带有圆角,您可以使用answer from this question。它说,您需要在 res/drawable 文件夹中定义背景 xml 文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFF"/>
    <stroke android: android:color="#B1BCBE" />
    <corners android:radius="10dp"/>
    <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" />
</shape>

并在您的 linearlayout 背景中使用它:

<LinearLayout
    ...
    android:background="@drawable/layout_bg"/>

【讨论】:

以上是关于Android:带有圆角的 ScrollView。儿童视野在角落流血的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中制作带有圆角的自定义对话框

带有圆角和透明背景的 Android 自定义警报对话框

带有位图标记的 Android XML 可绘制圆角

Android:带有自定义标题的圆角TextView XML布局

如何在 android 中制作带有圆角的 EditText 组件

带有透明状态栏的 Android ScrollView 裁剪底部