【问题标题】:Android TableLayout - shrink a bit moreAndroid TableLayout - 再缩小一点
【发布时间】:2012-02-24 04:56:44
【问题描述】:

我正在尝试将多个文本元素放在一行中,并且其中一个元素被认为是“活动的”。所以我有以下两种情况:

  • 所有文本元素的总宽度小于父宽度。只需按原样显示所有文本元素。
  • 总宽度超过父宽度。显示“活动”元素的全文而不进行任何剪辑,使用椭圆缩小所有其他文本元素。

让我们假设保证如果只有一个元素,它总是合适的。

字符串列表是动态的。任何元素都可以随时设置为“活动”。

到目前为止,我有以下内容:具有单行的表格布局,所有“非活动”列都设置为可收缩,文本元素最后设置为椭圆形。 “活动”的是 setEllipsize(null) 并且列不可收缩。

问题是所有可收缩列都收缩到某个固定百分比,但不会更多。如果这还不足以让“活动”文本显示出来,则整个表格将被剪裁到父宽度。

所以问题是我是否缺少某种方法来控制可以缩小多少列。

附:所有布局都是由代码生成的,而不是使用布局 xmls。

【问题讨论】:

  • 所以我决定用自定义的 onMeasure 实现我自己的 ViewGroup,这将强制所有非活动元素在保持总宽度的同时缩小。然后我决定我实际上并不需要使用这个可收缩行的整个功能。

标签: android android-layout tablelayout android-tablelayout


【解决方案1】:

您可以使用布局权重来代替缩小元素,或者如果更好,您可以将视图的可见性设置为 INVISIBLE 或 GONE。但是,如果您仍然需要显示整行文本,您可以保持所有行完全相同。 然后,当视图处于活动状态时,您可以使用作为全文的 relative_layout 在顶部覆盖另一个视图。所以你基本上会使用弹出窗口效果。

【讨论】:

  • 权重的问题是字符串可能非常不同。短字符串需要很少的空间,长字符串需要更多。这意味着权重必须取决于字符串的长度,对吧?
  • 是的。事情可能会变得有点丑陋。我只是建议保持所有物品相同。大小和椭圆=真。不仅仅是将另一个视图放在顶部以突出显示用户选择的内容。这样他们仍然可以看到所有其他条目
  • 我还希望它们是可点击的,而不仅仅是可见的。
猜你喜欢
  • 1970-01-01
  • 2014-04-16
  • 1970-01-01
  • 2012-10-28
  • 2021-05-15
  • 2012-12-10
  • 2011-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多