有没有办法在级联中获取给定文本和固定宽度的字体大小?
我正在尝试:
TextField{
autoFit: TextAutoFit.FitToBounds
}
但文本总是出现左对齐。要求是将文本与固定矩形中的可变字体大小标签呈现居中对齐。
有没有办法在级联中获取给定文本和固定宽度的字体大小?
我正在尝试:
TextField{
autoFit: TextAutoFit.FitToBounds
}
但文本总是出现左对齐。要求是将文本与固定矩形中的可变字体大小标签呈现居中对齐。
如果您只想居中对齐文本,则需要使用textStyle.textAlign
如下属性:
textStyle.textAlign: TextAlign.Center
为了在固定矩形中使用可变字体大小标签渲染居中对齐文本,您基本上需要为上述Label
使用 textStyle.textAlign
属性指定该矩形的所需宽度和高度,并通过相应的属性选择字体大小textStyle.fontSize
Label
。文本对齐将Cascades
自动完成(当然,如果您的文本不能适合指定的宽度/高度,它将被切断):
import bb.cascades 1.0
Page {
Container {
layout: DockLayout {}
horizontalAlignment: HorizontalAlignment.Fill
verticalAlignment: VerticalAlignment.Fill
Label {
horizontalAlignment: HorizontalAlignment.Center
verticalAlignment: VerticalAlignment.Center
maxWidth: 300
minWidth: maxWidth
maxHeight: 100
minHeight: maxHeight
multiline: true
text: "Some very very very very very long text here"
textStyle.textAlign: TextAlign.Center
textStyle.fontSize: FontSize.XLarge
}
}
}
我推荐这种方法来实现目标。
但是,如果您真的想获取小部件中使用的字体的绝对值,textStyle.fontSize
请为此使用属性(TextStyle官方文档)。
目前 BB10 Cascades 中没有字体指标,因此您将无法确定字体是否不适合标签并调整其大小。
您可以对 layoutUpdateHandler 使用某种技巧来粗略调整大小,但我不推荐它。如果文本经常更改,您会看到闪烁,但如果只设置一次,则可能没问题。更改“onCreationCompleted”中设置的文本以查看文本是否为您调整大小。
Container {
id: root
implicitLayoutAnimationsEnabled: false
background: Color.Cyan
property int width: 500
property string text: ""
property double textSize: 20
layout: DockLayout {
}
attachedObjects: [
LayoutUpdateHandler {
onLayoutFrameChanged: {
if (layoutFrame.width > root.width) {
root.textSize = root.textSize - 1
}
}
}
]
Label {
implicitLayoutAnimationsEnabled: false
maxWidth: root.width
text: root.text
textStyle {
fontSize: FontSize.PointValue
fontSizeValue: root.textSize
}
}
Label {
implicitLayoutAnimationsEnabled: false
text: root.text
opacity: 0
textStyle {
fontSize: FontSize.PointValue
fontSizeValue: root.textSize
}
}
onCreationCompleted: {
root.text = "Hello World AAAAAAAA"
}
}