是否有一種方法可以在級聯中獲取給定文本和固定寬度的字體大小?固定寬度標籤與動態字體大小
我與努力:
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"
}
}
感謝您的回覆,但標籤應縮小「非常非常長的文本」的字體大小以適應內容。此外,「textStyle.fontSize」將始終返回創建窗口小部件時設置的字體大小。 – Shailesh
Ugg。對不起,誤點了。 Sunseeker,我並不是故意冷眼旁觀。當我看到它時太遲了。 –