根据可用的水平空间有条件地在 ListAdapter 中显示项目

Posted

技术标签:

【中文标题】根据可用的水平空间有条件地在 ListAdapter 中显示项目【英文标题】:Conditionally display items in ListAdapter based on available horizontal space 【发布时间】:2012-08-22 13:32:27 【问题描述】:

我有一个 ListAdapter,它使用 RelativeLayout 来显示列表中的项目。

布局有一个在右侧对齐的 TextView,我想根据可用空间从左侧显示 ImageView/TextView 对的变量列表。如果其中一对会与右对齐的文本视图重叠,我不想再显示了。

以下是一些说明图片:

在狭窄的屏幕上,可能会显示 2 对:

在更宽的屏幕上可能会显示 4 对:

我已经尝试在 BaseAdapter getView 覆盖中测量元素。但这只是衡量文本,并没有告诉我位置。我想我也需要调用 layout 吗?

我可以使用更简单的技术吗?

提前致谢

【问题讨论】:

【参考方案1】:

您可以为不同的方向和大小的屏幕设计单独的布局,然后 android 会自动为您加载合适的布局。阅读如何做到这一点:Designing for Multiple Screens

【讨论】:

我需要更灵活的东西。右对齐和.pair 文本在同一个列表中可以是不同的长度。因此,即使在同一设备上,某些行也只能显示 2 对而不会重叠其他 4。

以上是关于根据可用的水平空间有条件地在 ListAdapter 中显示项目的主要内容,如果未能解决你的问题,请参考以下文章

如何使水平元素扩展以覆盖可用空间?

如何有条件地在 StackView 中居中图像

根据模板客户端有条件地在模板中排除 CSS 资源文件

根据 props 有条件地在组件上应用实用程序类的最佳方法

如何根据道具有条件地在 Stack Navigator 中渲染不同的屏幕

使用 React 的 className 属性和 PostCSS 有条件地在三元组中添加多个类