【问题标题】:Different z-position for ListView itemsListView 项目的不同 z 位置
【发布时间】:2013-04-23 13:04:08
【问题描述】:

是否可以让 ListView 中的项目具有不同的 z 位置/索引?

我希望我的 ListView 中的一项始终位于我的布局中的其他视图之上。

在这里查看我的插图:

红色条是 ListView 之外的另一个视图(在我的例子中是垂直搜索栏)。

我曾尝试在某个项目上调用View.bringToFront(),但这根本不起作用。

有什么想法吗?

【问题讨论】:

  • 就像任何值一样,您可以更改z-index,以便在用户与页面交互时对象在其页面位置向前或向后移动。
  • @Andrew 更改视图的 Z-index 只会更改 相对于其兄弟视图的位置。在ListView 中,列表中的所有项目都是兄弟,但更改 Z-index 将不起作用,因为列表项目不重叠。更改列表中一个项目的 Z-index 不会使其向前跳转到另一个 不是ListView 中视图的兄弟的视图前面.

标签: android listview z-index always-on-top


【解决方案1】:

以下是我将如何实现您想要的效果:

列表中的每个项目都应该有一个红色条,它是项目的高度。这样一来,所有的红条都排成一列,看起来好像只有一个红条,而实际上每个项目都有一个。

如果您使用FrameLayout,则孩子的顺序决定了绘制顺序,例如FrameLayout 的第三个孩子将出现在第一个和第二个孩子的顶部。

然后在运行时,您可以在每个项目的内容上方或下方排列红色条。在适配器的bindView 方法中,您可以使用bringToFront 方法将红色条带到该视图的前面。不要忘记视图在 ListView 中被回收,因此您每次都需要移动红色条以更正 z 位置。

这是视图中项目的一个非常精简的示例 XML 文件,如果您需要更多信息,请告诉我。

item_red_bar_bottom.xml:

<FrameLayout ...>
   <ImageView .../> <!-- Red bar on bottom -->
   <FrameLayout ...>
       <!-- Normal item contents go here -->
   </FrameLayout>
</FrameLayout>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-10
    • 2018-11-23
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    相关资源
    最近更新 更多