Titanium и Android: использование кнопки внутри текстового поля

#android #mobile #titanium

#Android #Мобильный #titanium

Вопрос:

Возможно ли создать текстовое поле с кнопками внутри? Я нашел свойства rightButton и leftButton, но использование Android (эмулятор) не работает. Есть ли другая альтернатива?

Это используемый код:

 var rightButton1 = Titanium.UI.createButton({
    color:'#fff',
    width:25,
    height:25,
    right:10,
    backgroundImage:'plus.png',
    backgroundSelectedImage:'plus.png',
    backgroundDisabledImage: 'plus.png'
});

rightButton1.addEventListener('click',function()
{
    Titanium.UI.createAlertDialog({
        title:'Button clicked',
        message:'Button clicked'
    }).show();
});

var textField3 = Titanium.UI.createTextField({
    color:'#336699',
    width:"auto",
    height:"auto",
    borderStyle:Titanium.UI.INPUT_BORDERSTYLE_ROUNDED,
    rightButton:rightButton1
});
  

Заранее спасибо.

Комментарии:

1. Пожалуйста, разместите весь свой соответствующий код.

Ответ №1:

Согласно KitchenSink, в настоящее время это функция только для iPhone.

 if(Titanium.Platform.name == 'iPhone OS') {
    data.push({title:'Buttons on Textfields', hasChild:true, test:'../examples/textfield_buttons.js'});
}
  

Однако я не понимаю, почему вы не могли подделать это, создав view и поместив кнопку поверх textField потому что Titanium.UI.Android поддерживает zIndex просто отлично и focus событие для переключения видимости button .

 var view = Ti.UI.createView();

var textField = Ti.UI.createTextField({
    // cordinates using top, right, left, bottom
    zIndex: 1
});

var button = Ti.UI.createButton({
    // cordinates using top, right, left, bottom
    visible: false,
    zIndex: (textField.zIndex   1)
});

view.add(textField);
Ti.UI.currentWindow.add(button);
Ti.UI.currentWindow.add(view);

// you only need the listeners if you want to hide and show the button
textField.addEventListener('focus', function(e) {
    button.show();
});

textField.addEventListener('blur', function(e) {
    button.hide();
});