2013-07-15 2 views
2

Есть ли способ в каскадах получить размер шрифта для заданного текста и фиксированной ширины?Исправлена ​​ширина метки с динамическим размером шрифта

Я пытался с:

TextField{ 
    autoFit: TextAutoFit.FitToBounds 
} 

Но текст всегда появляются выравнивание по левому краю. Требование состоит в том, чтобы центрировать выравнивание текста с помощью переменной метки размера шрифта в фиксированном прямоугольнике.

ответ

0

Если вы хотите просто Выровнять по центру текста, вам нужно использовать textStyle.textAlign свойства так:

textStyle.textAlign: TextAlign.Center 

Для того, чтобы центр выравнивания текста с переменным шрифтом ярлыком размера визуализации в фиксированном прямоугольнику, вы в основном должны для указания нужной ширины и высоты этого прямоугольника для Label используйте упомянутое выше свойство textStyle.textAlign и выберите размер шрифта с помощью соответствующего textStyle.fontSizeLabel. Текст выравнивания будет сделано 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).

+0

Спасибо за ответ, но ярлык должен уменьшить размер шрифта для «очень длинного текста», чтобы он соответствовал содержимому. Также «textStyle.fontSize» всегда возвращает размер шрифта, который был установлен при создании виджета. – Shailesh

+0

Ugg. Извините за неправильный выбор. Я не хотел понижать, Sunseeker. Слишком поздно отменить, когда я это увидел. –

0

В настоящий момент в каскадах BB10 нет метрик шрифта, поэтому вы не сможете узнать, не помещается ли этот шрифт на этикетке и изменить его размер.

Вы можете использовать вид хака с 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" 
     } 
    }