Изменить часть этикетки в Titanium или Alloy/Appcelerator

Я хочу динамически изменить часть метки.

Это мой код:

<View top="0" height="115">
    <Label id="lblMiles" left="15" textAlign="right" right="15" top="0" height="55">
        {distance} Miles
    </Label>
</View>

Я хочу иметь возможность динамически изменять часть {distance}. Однако в настоящее время я могу изменить все только так:

$.lblMiles.text = "10 Miles";

В HTML мы обычно используем тег span следующим образом:

<div id="lblMiles"><span id="distance"></span> Miles</div>

Как я могу сделать что-то подобное в Alloy?


person Yahya Uddin    schedule 02.02.2017    source источник


Ответы (2)


Если бы это зависело от меня, я бы не беспокоился об обновлении только половины метки, а просто сбросил бы весь текст,

$.lblMiles.text = "10 Miles";
// and then later on to update it to 15
$.lblMiles.text = "15 Miles";

если по какой-то причине вам нужно обновить только половину, вы можете использовать две метки и поместить их в вид с горизонтальной компоновкой.

что-то похожее на это:

<View top="0" height="115">
    <View height="Ti.UI.SIZE" width="Ti.UI.SIZE" layout="horizontal">
        <Label id="dynamicLabel" />
        <Label id="lblMiles" > Miles</Label>
    </View>
</View>

а затем в своем коде просто обновите динамическую метку, установив фактическое значение:

$.dynamicLabel.text = "15";

Теперь, чтобы расположить метки на экране, вы должны поиграть с атрибутами их контейнера слева, справа, сверху и снизу.

person TheFuquan    schedule 02.02.2017

Вы можете сделать это двумя тремя способами

  1. Имейте две разные метки и установите их с контроллера
  2. Вы также можете использовать строки с атрибутами. Дополнительная информация находится здесь http://docs.appcelerator.com/platform/latest/#!/guide/Attributed_Strings
person Amrut    schedule 03.02.2017