Netspirit, скорее всего, так и происходит. Вот только скролл в первую очередь отрисовывается на весь экран и уже потом линейный контейнер помещается под него, т.е. за пределами экрана.
Этот топик читают: Гость
Ответов: 95
Рейтинг: 2
|
|||
карма: 0 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Попробуй в LayoutScroll поставь HeightMode=WrapContent.
|
|||
карма: 26 |
|
Ответов: 95
Рейтинг: 2
|
|||
Netspirit, так в том то и смысл: сделать внизу кнопку, а всё остальное пространство занять скроллом
|
|||
карма: 0 |
|
Ответов: 578
Рейтинг: 14
|
|||
карма: 0 |
| ||
файлы: 1 | code_35114.txt [578B] [488] |
Ответов: 4628
Рейтинг: 749
|
|||
Вот так должно получиться?
------------ Дoбавленo в 17.36: На SVN обновлены LayoutLinear, LayoutScroll. Вот пример применения:
|
|||
карма: 26 |
|
Ответов: 163
Рейтинг: 33
|
|||
Netspirit, sаmakacd, может возьмете на заметку. Я тут подумал, чтобы при использовании нескольких одинаковых (или разных) элементов, использующих какие-то однотипные переменные в коде, которые не меняются в процессе работы, бестолку плодятся копии этих переменных, содержащие одинаковые значения. Ну например, каким-нибудь элементам нужен ContentResolver. Ну и допустим мы будем получать его в onCreate при запуске программы. Если договориться о каком-то стандарте в названиях полей, то можно в функции Init всех элементов, которым нужен ContentResolver, разместить примерно такой код:
И еще одно предложение. В сервисе неплохо бы в event onStart вывести Action переданного при запуске Intent`a (а в идеале еще и сам Intent снизу. Просто общаться с сервисом безопаснее всего именно через startService. При других способах надо быть уверенным что сервис запущен, иначе - exception. Прикладываю модификацию hiChildService, в которой Action выведен:
|
|||
карма: 3 |
|
Ответов: 4628
Рейтинг: 749
|
|||
GreM, глянь на сервис, так ли всё, как нужно: andr childservice upd 2015-02-15.7z
На будущее: если данные выдаются в поток и нету соответствующей нижней точки и они нигде по коду больше не используются - нет необходимости создавать глобальную переменную с помощью AddVar(). Потому что выдаваемые в поток данные могут быть использованы только в текущем методе, который вызвал событие. Чтобы использовать их позже, пользователю нужно будет сохранить данные из потока в Memory, а это уже и будет глобальная переменная. Вот для точки Intent нужно добавлять переменную. Кроме того для данных типа int, String, double можно просто проставлять код точки в ini (1,2,7), тогда не будет необходимости использовать ToType при выдачи данных на точку. По поводу ContentResolver. Что-то у тебя слишком много телодвижений. А что, нельзя в том месте, где он нужен, сделать AddToImport('android.content.ContentResolver')
println('ContentResolver ', cr, ' = getApplicationContext().getContentResolver();') ... |
|||
карма: 26 |
|
Ответов: 163
Рейтинг: 33
|
|||
Netspirit, я там не зря вставил 2 проверки на null. Согласно документации,
public int onStartCommand (Intent intent, int flags, int startId) Ну и сам Action часто может быть null, это необходимо учесть.... intent The Intent supplied to startService(Intent), as given. This may be null if the service is being restarted after its process has gone away, and it had previously returned anything except START_STICKY_COMPATIBILITY. Netspirit писал(а): нет необходимости создавать глобальную переменную с помощью AddVar()
Netspirit писал(а): Кроме того для данных типа int, String, double можно просто проставлять код точки в ini (1,2,7), тогда не будет необходимости использовать ToType при выдачи данных на точку.Netspirit писал(а): По поводу ContentResolver. Что-то у тебя слишком много телодвижений. А что, нельзя в том месте, где он нужен, сделатьAddToImport('android.content.ContentResolver') println('ContentResolver ', cr, ' = getApplicationContext().getContentResolver();')...
В общем я это все к чему? Вот столкнулся я при написании элементов с проблемой как в последней приведенной схеме. И задумался, какие варианты?
|
|||
карма: 3 |
|
Ответов: 4628
Рейтинг: 749
|
|||
GreM писал(а): сам Action часто может быть nullА вот то, что Intent может быть null, так а что делать в таком случае? Вручную создавать пустой? В схеме можно поставить ErrorHandler... GreM писал(а): Чего процессор по нескольку раз гонятьGreM писал(а): какие варианты?Вариант - не допускать такого включения. Первый способ этого добиться - сделать оптимизированный режим в хабе (будет не совсем оптимальная выдача данных в потоке, но не критично). Второе - в компонентах, которые из нескольких методов вызывают одинаковое событие, предусмотреть создание отдельного метода в коде для такого события (либо сделать по своему событию для каждого метода) Вообще, если будут созданы некоторое количество компонентов, требующих ContentResolver - сделаем. ------------ Дoбавленo в 18.58: Так пойдёт? |
|||
карма: 26 |
|
Ответов: 163
Рейтинг: 33
|
|||
Netspirit писал(а): Так пойдёт?Netspirit писал(а): вроде String с null в строковых операциях ведет себя как пустая строка------------ Дoбавленo в 13.05: Netspirit, попробовал сервис последней правки (вчера не заметил как ты обновил). Запускается нормально, но при автоматическим перезапуске после остановки системой по нехватке памяти, крешется при попытке сравнить Action с какой-нибудь строкой. А вот если после println('st_intent = (', intnt,' != null)?', intnt,': new Intent();') добавить println('if (st_intent.getAction() == null) st_intent.setAction("");'), то работает нормально. Ну и тогда в описание точки onStart можно добавить: "При отсутствии Action выдает пустую строку". |
|||
карма: 3 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Обновил.
|
|||
карма: 26 |
|
Ответов: 163
Рейтинг: 33
|
|||
Что-то ты опять вчерашнее упаковал.
|
|||
карма: 3 |
|
Ответов: 4628
Рейтинг: 749
|
|||
На SVN обновил.
|
|||
карма: 26 |
| ||
Голосовали: | GreM |
Ответов: 163
Рейтинг: 33
|
|||
Привет. Предлагаю несколько правок.
Vibrator_.zip
Intent.zip Добавлено св-во Flags. Spinner.zip Раньше при вызове doItems шрифт списка становился черным. В результате при темной теме ничего не было видно. Еще после вызова doItems происходило увеличение высоты спинера. Долго мучался (не люблю я визуальными элементами заниматься), в результате переделал создание спинера "по букварю". Layout шрифта спинера из кода удалил. В onCreate создается ArrayAdapter, использующий layout "android.R.layout.simple_spinner_item". Одно не удалось - очищать ArrayAdapter методом clear при вызове doItems. Так что каждый раз при изменении списка создается новый ArrayAdapter. Method.zip sаmakacd, зря ты его забросил, интересный элемент. Идеальная замена ic, когда надо вставить в схему буквально пару строчек своего кода. А еще можно стандартные методы Activity переопределять (мне вот понадобилось onUserLeaveHint переопределить, ну не править же ради этого элемент Activity). Вот только точка Result некорректно работала (уже забыл подробности). Ну я немного подправил. |
|||
карма: 3 |
|
Ответов: 4628
Рейтинг: 749
|
|||
С флагами в Intent: а почему их не сделать в виде группы с включением по True/False?
|
|||
карма: 26 |
|