Вот способ реализовать ввод цифр в textedit . не фонтан конечно но выход из ситуации решить поможет в какой то степени.
//Init variables. var sum = "";
//Called when application is started. function OnStart() { //Create a layout with objects vertically centered. layMain = app.CreateLayout( "linear", "FillXY" );
//Create array to hold number buttons. keys = [ 1,2,3, 4,5,6, 7,8,9, 0,"ok","c" ];
//Create text control for displaying sum. txtSum = app.CreateText( "", 0.8, 0.1 ); txtSum.SetTextSize( 42 ); txtSum.SetBackColor( "#ff222222" ); txtSum.SetMargins( 0, 0.1, 0, 0.05 ); layMain.AddChild( txtSum );
//Handle clear button. else if( txt=="c" ) sum = "";
//Handle other buttons. else sum += txt;
//Update display. txtSum.SetText( sum ); }
//Calculate sum. function CalcResult() { try { //Evaluate sum (and catch errors). sum = eval( sum ).toFixed(2); } catch(e) { sum = "Error" } }
------------- добавлено в 01.52: За основу взят пример калькулятора. Немного доделав можно получить такое - допустим нам надо ввести число - делаем кнопку на первой активити , жмем , выпадает второе активити с цифровым вводом. Вводим нужные цифры, жмем окей , данные передаются в переменную, откуда мы можем их достать. Если надо могу все доделать и выложить пример использования.
Идея понятна. Тоже вариант. Надо точку добавить для ввода float и контролировать ввод при каждом нажатии, чтоб две точки запрещало вводить. И стирать по одному символу. Изначально ноль желательно чтоб горел, при вводе числа заменялся на него, при удалении всех чисел снова ноль. Вобщем там не так уж немного доработать)). Нижнее поле ненужно, что ввел, то ввел, нажал ок (привычнее стрелочку enter), результат вставился в кнопку (или не ввелся, если вместо числа введена одна точка и все). Если есть желание- сделай пример. Кстати, аппаратную кнопку назад можно тоже повесить на продублирование ок, или она только программу закрывать может? Не копал это еще...
//Init variables. var sum = "0"; var maxvalue = 99999999.99; var round = 2;
//Called when application is started. function OnStart() { //Create a layout with objects vertically centered. layMain = app.CreateLayout("linear", "FillXY");
//Create array to hold number buttons. keys = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, ".","⇦", "C", "↺", "Ok"];
//Create text control for displaying sum. txtSum = app.CreateText(sum, 0.9, 0.1); txtSum.SetTextSize(30); txtSum.SetBackColor("#222222"); txtSum.SetMargins(0, 0.45, 0, 0.01); layMain.AddChild(txtSum);
//Create first row of buttons. lay1st = app.CreateLayout("linear", "Horizontal"); for( i=0; i<4; i++) AddButton(lay1st, keys[i]); layMain.AddChild(lay1st);
//Create second row of buttons. lay2nd = app.CreateLayout("linear", "Horizontal"); for(i=4; i<8; i++) AddButton(lay2nd, keys[i]); layMain.AddChild(lay2nd);
//Create third row of buttons. lay3rd = app.CreateLayout("linear", "Horizontal"); for(i=8; i<12; i++) AddButton(lay3rd, keys[i]); layMain.AddChild(lay3rd);
//Add a button to a given layout. function AddButton(lay, name) { w = name == "Ok" ? 0.45 : 0.225; btn = app.CreateButton(name, w, 0.1, "Gray"); btn.SetOnTouch(btns_OnTouch); btn.SetTextSize(20); lay.AddChild(btn); }
//Called when user presses number buttons. function btns_OnTouch() {
//Get button text. btn = app.GetLastButton(); var txt = btn.GetText();
//Handle equals button. if(txt == "Ok") true; //cancel else if(txt == "↺") { sum = "0"; // ....... } //clear else if(txt == "C") sum = "0"; //Handle clear button. else if(txt == "⇦") { sum = sum.slice(0, -1); if (sum == "") sum = "0" } else if(txt == ".") { if (sum.indexOf(".") != -1) txt = ""; sum += txt; } //Handle other buttons. else { if (sum == "0") sum = ""; else if (eval(sum + txt) > maxvalue || sum.slice(sum.indexOf("."), -1).length == round) txt = ""; sum += txt; }
//Update display. txtSum.SetText(sum); }
вот переделал немного на досуге. Только я вот не врублюсь- это что, всю программу одним скриптом писать, чисто на функциях? js плохо знаю просто... ------------- добавлено в 20.32: Разобрался, можно классы имитировать
dimy44, вот еще лучше. Главное преимущество это никаких зависимостей. ------------- добавлено в 21.39: Вот тут еще можно почитать о разбиении кода(модульность)Cсылка
Надо мне пару деньков документацию подучить, потом чето писать. А то вроде и понятно все, но потом придется все переписывать, когда выяснится что код ужасен, было уже такое))
Есть еще момент, над которым предстоит подумать. Тут ведь нету аналога ScrollView. А у меня заранее не известно количество полей с виджетами, динамически создаются пользователем. Ну, естественно реализация корявая, т.к. при добавлении очередного поля с виджетами перерисовывается все полностью, в сл4а хз как иначе. Но там это засовываешь в ScrollView и не паришься по поводу того, что вдруг чего не поместится. Тут же такого нету. Приду домой с работы, буду макеты пробные делать, смотреть как лучше реализовать. ------------- добавлено в 14.46: и еще, если мне понадобится созданный layout в дальнейшем, как убрать с него старые виджеты, чтоб новые рзместить?