Bol*_*aul 8 android rounded-corners android-dialogfragment
我想用角落制作一个对话框片段.我有问题

如您所见,如果TextView位于顶部,则会有一些部分位于对话框的透明部分,这很糟糕.列表视图中的滚动条也会发生这种情况.我想"剪切"那些部分......或者在第二张照片中掩饰它们.这可能吗?
形状
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#FFF" />
<corners android:topLeftRadius="20dp" android:topRightRadius="20dp"
android:bottomLeftRadius="20dp" android:bottomRightRadius="20dp"/>
<stroke android:color="#7F7F7F" android:width="1dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)
我正在使用片段的线性布局,具有上述背景.我打电话
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
Run Code Online (Sandbox Code Playgroud)
摆脱背景颜色和标题栏.
简单(非剪裁)方式
最简单的方法是简单地向您的布局添加填充。那么您的文本将不会与圆角重叠。
如果您必须有没有填充的圆角,我知道还有其他一些选项:
选项 1:剪辑视图(API 21+)
API 21 中的类中添加了对剪辑视图的支持View。如果您不需要早期的 API 级别,使用此内置剪辑功能非常容易:
android:clipToOutline="true"不幸的是,有一个错误,这个属性似乎不起作用。幸运的是,我们可以在 Java 中设置剪辑:
View.setClipToOutline(true)我已经测试过了,它有效:

选项 2:九片式框架遮罩
如果您需要在设备 < API 21 上支持舍入裁剪,您可以使用这种通用方法:
FrameLayoutor RelativeLayout,创建一个圆角九个补丁来“框定”您的其余内容。如果你使用这种方法,只需让你的九个补丁角与你的背景颜色相匹配。