エミュレートしようとするTi.UI.iPhone.SystemButton.FLEXIBLE_SPACE
と問題が発生し、何か提案 (または気付いていないネイティブ機能) があるかどうか疑問に思いました。現時点では、ツールバーをエミュレートするための一時的な回避策があります。アイテムが 1 つある場合は中央に配置され、2 つある場合は最初のアイテムが左側に、2 つ目が右側に配置され、3 つ以上の場合はアイテムが中央に配置されます。最初でも最後でもない各アイテムは、ビューの特定のスロットに割り当てられます (スロットの幅はアイテムの数によって異なります)。以下の例では、オブジェクトitems
の配列であり、オブジェクトです。( Android の場合) は、対応する iOS の「定数」に対応する文字列です。Ti.UI.Button
view
Ti.Ui.View
systemButton
// Iterate over each item
for (var i in items)
{
// Continue if a flexible space
if ('FLEXIBLE_SPACE' === items[i].systemButton)
{
continue
}
// If there is more than one item
if (1 !== items.length)
{
// Get the key
var key = parseInt(i, 10)
// Set the position
switch (true)
{
// First
case (0 === key):
items[i].left = 0
break
// Last
case (items.length - 1 === key):
items[i].right = 0
break
// Otherwise if there are more than 3 items
case (3 < items.length):
// Get the slot width
var slot = 100 / items.length
// If a left position
if (key < items.length / 2)
{
items[i].left = (slot * key) + '%'
}
// Otherwise
else
{
items[i].right = (slot * (items.length - key - 1)) + '%'
}
// Break
break
}
}
// Add the item to the view
view.add(items[i])
}
これは、場合によっては許容範囲内 (完全ではない) に機能しますが、柔軟なスペースが使用されている場合は、定義上、割り当てた固定幅のスロットに収まらないため、常にそうとは限りません。
どんな助けでも大歓迎です。
編集:
私は動的な解決策を探していることに言及する必要があります。個々のケースで左右の位置を明示的に定義できることはわかっていますが、(可能であれば) オブジェクトの配列を関数に渡して、ボタンを備えた疑似ツールバーとしてオブジェクトをTi.UI.Button
返すようにしたいと考えています。Ti.Ui.View
柔軟なスペースの存在に応じて配置されます。