【问题标题】:Ellipsized, multi-line text in an AppWidget?AppWidget中的椭圆形多行文本?
【发布时间】:2011-08-27 07:36:01
【问题描述】:

看似简单的要求变成了一个相当痛苦的过程。我需要一个 AppWidget 来显示一些(通常是多行)文本 - 文本的大小会有所不同,并且可能比视图允许的长,因此在这种情况下需要省略。该视图还将支持 Android v3.1 中可调整大小的小部件,这再次要求小部件能够正确地动态支持不同大小的内容。容易,你会想吗?如果是单行TextView,我想应该是……

因此,最初我创建了一个 TextView,将属性设置为在文本不适合时将其省略,然后遇到 the bug 这意味着这不起作用 - 文本仅包含两行。

然后我用多行抓住an open source custom view that ellipsizes correctly,它工作正常,但只在一个活动中。我忘记了 AppWidget 限制了小部件中可以包含的视图,所以这也失败了(“类不允许被夸大”)。我看不出有办法使用这个自定义视图。

所以...我能想到的最佳解决方案是向小部件添加一系列单行 TextView,并遍历子字符串,直到找到适合每一行的长度,然后再继续下一行。即手动渲染/测量/渲染文本。这种方法有很多缺点。

有没有更好的方法将多行椭圆形文本放入 AppWidget 中?

【问题讨论】:

    标签: android android-appwidget


    【解决方案1】:

    说实话,我认为你应该退后一步,重新考虑你想要做什么。能够调整小部件的大小实际上是为新型可调整大小的容器设计的,在这种容器中,可用的数据量明显可变,并且小部件有一种明确定义的方式来表达它应该如何在容器中显示。如果您不使用这些,那么您要构建一个布局来调整以在用户显着调整其大小时提供有用的信息是非常棘手的。

    人们会采用的旧方法——让应用小部件以不同的单元格大小提供,每个单元具有不同的布局——对于不使用新堆栈或列表 UI 的应用小部件可能仍然有意义。

    【讨论】:

    • 您建议的方法适用于 Honeycomb 以后,但该应用程序可以在其他设备上运行。我认为很明显这里有一个错误 - 它在某些情况下会省略,但在其他情况下不会。我可能最终会使用透明度将最后一行淡入背景 - 这很丑陋,但考虑到平台限制,这是一个明智的解决方案。
    • 我不确定你的意思。我建议的方法是不要使用 Android 3.1 中引入的可调整大小的小部件功能。
    • 用户没有调整大小 - 小部件显示文本,其大小不同。小部件是固定大小的,内容各不相同,因此必须有一些方法来带来弹性来处理它,而不是仅仅将一个词切成两半。框架实现没有按预期工作是一个巨大的耻辱。
    【解决方案2】:

    我也一直在研究这个确切的问题,我的解决方案是使小部件固定大小,并在垂直 LinearLayout 中使用 10 个 TextView。如果没有实际的 ListView,似乎没有其他方法可以做到这一点。

    我想现在已经足够了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      相关资源
      最近更新 更多