如何创建一个具有透明背景和阴影的形状,但形状轮廓后面的阴影不应该是可见的?

2024-03-09

这里有点类似的问题,但答案是只删除海拔和阴影......不是我想要的:Android CardView 透明时有奇怪的边框 https://stackoverflow.com/questions/31624085/android-cardview-with-weird-border-when-transparent/31624267

我想要的是 Pixel Launcher 搜索栏中显示的内容......即具有半透明背景和阴影的形状,但是阴影不与白色形状重叠(这最终会使它看起来是灰色的)。我基本上想要一个阴影,但在它的中间有一个洞,我的形状就是......

This is what I want to achieve (the search bar down the bottom): What I want

这是我尝试过的,但您可以从附图中看到,灰色阴影穿过半透明的白色背景。

活动主文件

    <FrameLayout
      android:layout_width="120dp"
      android:layout_height="120dp"
      android:background="@drawable/rectangle"
      android:elevation="8dp" />

矩形.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <corners android:radius="4dp" />
  <solid android:color="#aaffffff" />
</shape>

This is what my attempt looks like: My failed attempt

你可以看到,尽管我的形状是白色背景上的半透明白色,但由于下面的阴影,它变成了灰色,这不是我想要的。

我也尝试使用 View#setOutlineProvider 但没有成功。

我也尝试过玩https://github.com/harjot-oberai/MaterialShadows https://github.com/harjot-oberai/MaterialShadows

如果可以避免的话,我不想用 9patch 图像来做。


一种解决方案是将透明度应用于框架本身,而不仅仅是矩形的背景。这将产生类似于如图所示的效果。

例如:

<FrameLayout
    android:layout_width="120dp"
    android:layout_height="120dp"
    android:elevation="8dp"
    android:alpha="0.6" />

如果您想要非透明元素,这当然会出现问题,要解决此问题,您可以提取背景,然后执行以下操作:

<FrameLayout
    android:layout_width="120dp"
    android:layout_height="120dp">
    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/rectangle"
        android:alpha="0.6"
        android:elevation="8dp" />
</FrameLayout>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建一个具有透明背景和阴影的形状,但形状轮廓后面的阴影不应该是可见的? 的相关文章

随机推荐

  • .NET Core 中类内部的结构对齐

    我试图理解为什么只包含 int 的结构在类中占用 8 个字节的内存 考虑以下代码 static void Main var rand new Random var twoIntStruct new TwoStruct new IntStru
  • 将最大子宽度分配给其他子宽度的弹性框

    我有一组宽度应该相似的孩子 对于简单的孩子来说 宽度最大的孩子应该分配给其他孩子 我尝试使用flexbox但无法得到它 是否可以在弹性盒中实现或者我应该去实现JS解决方案 请参考我尝试过的示例 请不要发布任何 javascript 答案 f
  • While循环第二次忽略scanf

    include
  • 尝试调整 NSImage 的大小,使其变成 NSData

    我有一个 NSImage 我正在尝试像这样调整大小 NSImage capturePreviewFill NSImage alloc initWithData previewData NSSize newSize newSize heigh
  • 包含不区分大小写的方法而无需进行重大代码更改?

    有没有办法忽略 contains 方法的大小写 但同时使代码片段或多或少相同 This method returns a list of all words from the dictionary that include the give
  • 如何在 Google 地球插件上放置 html div?我想涉及到wmode

    我遇到麻烦了在 Google Earth 插件上放置一个 html div在网络应用程序中 任何帮助将不胜感激 它适用于地图 地形和混合模式 但在 Earth 模式 Flash 启动并自动将地图分层在顶部 Z 索引没有帮助 想必我可以做这样
  • UseDefaultCredentials 与 Exchange Web 服务

    我是一个相当新的程序员 我在工作中承担的任务之一是使用我们的自定义工具来创建草稿电子邮件并将其放入运行该工具的用户的草稿电子邮件文件夹中 我们目前使用 Exchange Server 2010 但正在迁移到 Exchange Online
  • Ajax 错误:SyntaxError:预期表达式,得到“<”

    我正在尝试从我的服务器登录到另一台服务器到我的其他站点 但这个错误每次都会出现 SyntaxError expected expression got lt
  • NoMethodError:nil 的未定义方法“匹配”:NilClass

    我的申请有一个大问题 我的网站位于 AWS 上 今天早上我进行了上限生产部署以在线添加新版本 但我的网址不再有效 这对我来说是一个非常非常大的问题 所以我把我的问题放在这里 I use Ruby on Rails EC2 S3 and sh
  • 线程意外唤醒

    我预计以下示例中的第二个线程会挂起 因为它等待一个没有相应通知的对象 相反 它会进入 println 可能是由于虚假唤醒 public class Spurious public static void main String args T
  • 为什么这个 VBA 生成的 QR 码会卡顿? (仅限条形码-vba-宏)

    Context 我在用仅条形码 VBA 宏 https code google com archive p barcode vba macro only 在这个帖子 https stackoverflow com a 31663859 66
  • 如何使用 fpdf php 创建双条形图?

    我在我的 php 项目中使用 FPDF 我希望在我的项目中拥有像上图这样的 PDF 版本双条形图 FPDF 有一种方法可以创建饼图和条形图http www fpdf org en script script28 php http www f
  • 如何加快大型 xlsx 文件的导入速度?

    我想要处理一个 200MB 的大型 Excel xlsx 文件 包含 15 个工作表和 100 万行 每行 5 列 并根据数据创建 pandas 数据框 Excel 文件的导入速度非常慢 最多 10 分钟 不幸的是 Excel 导入文件格式
  • java将列表字符串写入csv文件

    我有一些如下所示的数组字符串 请注意 每个玩家后面都有空格 显示不同的行 user1 track1 player1 user1 track2 player2 user1 track3 player3 我想根据行数 此处为空格 将该数组分为两
  • 使用 win32com 从 Python 加载 Excel 加载项

    我从这里的各种问题中看到 如果使用以下命令从 Python 打开 Excel 实例 xl win32com client gencache EnsureDispatch Excel Application xl Visible True w
  • 长按ListFragment

    我正在使用 ListFragment 并执行 onListItemClick 一切正常 但现在我想使用长项目点击 例如 setOnItemLongClickListener new OnItemLongClickListener for a
  • 如何从对象中递归删除子对象?

    我正在研究解决方案 我已经创建了基本的树形表格 每当用户单击展开时 与单击的行相关的数据将根据行数据显示在其下方 我已经实现了展开 折叠至 N 个嵌套级别的基本功能 但我只遇到一个问题 所以基本上所有行都有基于具有多个值的数组的条件展开按钮
  • 为什么需要内存对齐? [复制]

    这个问题在这里已经有答案了 可能的重复 内存对齐的目的 https stackoverflow com questions 381244 purpose of memory alignment 我在网上读了一些关于内存对齐的文章 可以理解
  • 从查询中检索单个值

    我正在尝试根据字符串字段用户名从单个表中检索整数值 我已经尝试使用存储过程和直接文本 当我执行存储过程时 我得到了正确的返回值 然而 正确的结果并没有出现 这是两组代码 直接文字 public int GetUserRole string
  • 如何创建一个具有透明背景和阴影的形状,但形状轮廓后面的阴影不应该是可见的?

    这里有点类似的问题 但答案是只删除海拔和阴影 不是我想要的 Android CardView 透明时有奇怪的边框 https stackoverflow com questions 31624085 android cardview wit