根据宽度和高度确定通知中的行数
Determining the number of lines in a notification, depending on width and height
所以我又遇到了另一个关于我的扩展的问题。我想根据通知的宽度和高度计算通知中的行数。
对于上下文,我正在设计一个扩展,它向通知列表中的通知添加一个按钮。那应该完全扩展通知。通知有一个布局管理器,与消息托盘中的通知相同。因为我想完全展开消息,所以我需要一种方法来计算行数。以下是我尝试过的以及效果最好的方法:
let nLines = (this._expandedLabel.clutter_text.get_width()) / (this.bodyLabel.clutter_text.get_width());
this._bodyStack.layout_manager._expandLines = nLines;
this._bodyStack.layout_manager.expansion = 1;
this.get_parent().set_height(this.get_height() + fix);
this.get_parent().layout_manager.layout_changed();
现在,这个几乎 工作了,行数有一个小的偏移量。四舍五入 nLines 不足以获得正确的行数。
我尝试了另一种解决方案,它涉及创建一个 Pango.Layout 对象,然后尝试计算行数:
let pangoLayout = this._expandedLabel.clutter_text.create_pango_layout(this._bodyText);
pangoLayout.set_height(this._bodyStack.get_height());
pangoLayout.set_width(this._bodyStack.get_width());
log("Line Count: " + pangoLayout.get_line_count());
在这种情况下,行数表示的是字数而不是行数。我在 Pango.Layout 中找不到可以帮助我从单词创建行的函数。有没有人有想法或可以帮助我找到不同的方法?
我可能还应该提一下,我尝试了换行,但这只会使行数高得离谱。
编辑:忘记提醒这一切都发生在扩展函数中,由 class 消息定义。
好的,我有。我错过了 Pango 使用 Pango 单位而不是像素这一事实。因此,为了获得 Pango 单位大小,像素必须乘以 Pango.SCALE
常数。
所以我又遇到了另一个关于我的扩展的问题。我想根据通知的宽度和高度计算通知中的行数。
对于上下文,我正在设计一个扩展,它向通知列表中的通知添加一个按钮。那应该完全扩展通知。通知有一个布局管理器,与消息托盘中的通知相同。因为我想完全展开消息,所以我需要一种方法来计算行数。以下是我尝试过的以及效果最好的方法:
let nLines = (this._expandedLabel.clutter_text.get_width()) / (this.bodyLabel.clutter_text.get_width());
this._bodyStack.layout_manager._expandLines = nLines;
this._bodyStack.layout_manager.expansion = 1;
this.get_parent().set_height(this.get_height() + fix);
this.get_parent().layout_manager.layout_changed();
现在,这个几乎 工作了,行数有一个小的偏移量。四舍五入 nLines 不足以获得正确的行数。
我尝试了另一种解决方案,它涉及创建一个 Pango.Layout 对象,然后尝试计算行数:
let pangoLayout = this._expandedLabel.clutter_text.create_pango_layout(this._bodyText);
pangoLayout.set_height(this._bodyStack.get_height());
pangoLayout.set_width(this._bodyStack.get_width());
log("Line Count: " + pangoLayout.get_line_count());
在这种情况下,行数表示的是字数而不是行数。我在 Pango.Layout 中找不到可以帮助我从单词创建行的函数。有没有人有想法或可以帮助我找到不同的方法?
我可能还应该提一下,我尝试了换行,但这只会使行数高得离谱。
编辑:忘记提醒这一切都发生在扩展函数中,由 class 消息定义。
好的,我有。我错过了 Pango 使用 Pango 单位而不是像素这一事实。因此,为了获得 Pango 单位大小,像素必须乘以 Pango.SCALE
常数。