gpt4 book ai didi

dialogfragment中的Android圆角布局

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:58:13 28 4
gpt4 key购买 nike

我想制作一个带角的对话框 fragment 。我遇到的问题

enter image description here

如您所见,如果 TextView 位于顶部,则它的某些部分会覆盖对话框的透明部分,这很糟糕。 ListView 中的滚动条也会发生这种情况。我想“切割”那些部分……或者像第二张照片中那样掩盖它们。这可能吗?

形状

    <?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>

我正在为具有上述背景的 fragment 使用线性布局。我叫

getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

去除背景颜色和标题栏。

最佳答案

简单(非裁剪)方式

最简单的方法是简单地向您的布局添加内边距。这样您的文字就不会与圆角重叠。

如果你必须有没有填充的圆角,还有一些我知道的其他选项:

选项 1:剪辑 View (API 21+)

支持clipping views已添加到 API 21 中的 View 类。如果您不需要更早的 API 级别,使用这个内置剪辑功能真的很容易:

  • 将圆形可绘制对象设置为布局背景。
  • 根据文档,您只需将布局 XML 中的 clip 属性设置为 android:clipToOutline="true"

不幸的是,有 a bug而且这个属性似乎不起作用。幸运的是,我们可以在 Java 中设置裁剪:

  • 在您的 Activity 或 fragment 中,只需执行:View.setClipToOutline(true)

我已经测试过了,它有效:

View Clipping ON View Clipping OFF

选项 2:九补丁框架掩码

如果您需要在设备

  • 使用FrameLayoutRelativeLayout,创建一个圆角nine-patch “框架”您的其余内容。
  • 这个九色 block 图像应该是透明的(alpha 0%),除了角,它应该是不透明的(alpha 100%)。
  • 将九补丁设置为 View 的背景,并将该 View 作为布局中的最后一个 subview (这使其堆叠在其他 View 之上)。
  • 然后文本将通过透明的九色补丁显示,但会在角处被遮盖。

如果您使用这种方法,只需让您的九色补丁角与您的背景颜色相匹配即可。

关于dialogfragment中的Android圆角布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27335383/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com