我想制作一个带有角的对话框片段。我有问题
如您所见,如果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>
我在上面的背景下为片段使用线性布局。我打电话
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
摆脱背景颜色和标题栏。
简单(非剪切)方式
最简单的方法是在布局中添加填充。这样您的文本就不会与圆角重叠。
如果您必须有没有填充的圆角,那么我还知道其他一些选择:
选项1:剪辑视图(API 21+)
对裁剪视图的支持已添加到View
API 21中的类中。如果不需要较早的API级别,则使用此内置裁剪功能真的很容易:
android:clipToOutline="true"
不幸的是,存在一个错误,该属性似乎不起作用。幸运的是,我们可以在Java中设置裁剪:
View.setClipToOutline(true)
我已经对其进行了测试,并且可以正常工作:
选项2:九片式面膜
如果需要在<API 21的设备上支持四舍五入的裁剪,可以使用以下常规方法:
FrameLayout
或RelativeLayout
,创建一个圆角的九角补丁,以“框”其余内容。如果使用这种方法,只需使九个色块的角与背景色匹配即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句