@xamarin_russia

Страница 168 из 619
Кита
06.09.2017
09:50:43
формс это надстройка, которая так или иначе внутри вызывает платформозависимый код

Ivan
06.09.2017
09:51:43
вопросик: в каком месте программы можно получить реальные размеры UI элементов? В App() и в OnStart() Width возвращает -1

Кита
06.09.2017
09:52:41
а какую задачу ты решаешь?

Ivan
06.09.2017
09:55:39
Пытаюсь сделать квадратные кнопки следующим образом: есть обёртка вертикального стэклэйаута, я вызываю AddRow(int buttonsNumber). Добавляется строка, создаётся buttonsNumber кнопок в горизонтальном стэклэйауте. Затем я их FillAndExpand. Таким образом получаю несколько строк с различным количеством кнопок, которые красиво расположены по горизонтали. Теперь нужно сделать эти кнопки квадратными. То есть получить их текущую ширину, которая была получена после FillAndExpand и присвоить значение высоте.

Google
Ivan
06.09.2017
09:56:24
ну там ещё у кнопок label'ы тоже прикреплены, но это сейчас не имеет значения, у них, кстати, тоже размеры вечно -1

Roman
06.09.2017
09:56:29
нужно предопределить свою кнопку от стандартной

protected override SizeRequest OnMeasure(double widthConstraint, double heightConstraint) { var result = base.OnMeasure(widthConstraint, heightConstraint); if (!double.IsInfinity(heightConstraint)) { result.Minimum = result.Request = new Size(heightConstraint, heightConstraint); } return result; }

Max
06.09.2017
09:57:24
ну там ещё у кнопок label'ы тоже прикреплены, но это сейчас не имеет значения, у них, кстати, тоже размеры вечно -1
Можно использовать любые картинки в качестве кнопки, если вдруг не получится. С помощью Gesture

Ivan
06.09.2017
09:58:04
Можно использовать любые картинки в качестве кнопки, если вдруг не получится. С помощью Gesture
ну конечная задача и сведётся к заполнению кнопки картинкой, но -1, видимо, у всех UI элементов

Кита
06.09.2017
09:58:45
Можно использовать любые картинки в качестве кнопки, если вдруг не получится. С помощью Gesture
ага, давайте завалим UI всякими битмапами которые не диспозятся/рецайклятся потом

Max
06.09.2017
09:58:59
ну конечная задача и сведётся к заполнению кнопки картинкой, но -1, видимо, у всех UI элементов
Лучше сразу делай их картинками, если сложно. Натаскивать картинки на кнопки - сплошное разочарование

Roman
06.09.2017
10:00:45
да... и соотвесвенно result.Minimum = result.Request = new Size(widthConstraint, widthConstraint); если по ширине

Ivan
06.09.2017
10:02:23
Лучше сразу делай их картинками, если сложно. Натаскивать картинки на кнопки - сплошное разочарование
Имейджу не сложно будет сделать эффект нажатия? Я прост из Unity пришёл, там просто на Button Image вешаем и всё прекрасно выглядит

Max
06.09.2017
10:03:17
Имейджу не сложно будет сделать эффект нажатия? Я прост из Unity пришёл, там просто на Button Image вешаем и всё прекрасно выглядит
Можно какую-нибудь анимацию навесить, типо по тапу изменять скейл на 0.9 и потом обратно на 1

Google
Ivan
06.09.2017
10:04:31
ну и накладывать немного серую масочку, как вариант

Kirill
06.09.2017
10:08:19
Да просто просчитать из кода все размеры и через HeightRequest и WidthRequest задать их, или свой лейаут написать, что еще лучше, тогда не будет рассчетов размеров и перерсовок лишних. С лейаутом можно вообще тогда не запрашивать из системы размер экрана. Туда приходит размеротвезенны лейауту, и уже от него плясать - рассчитывать размеры кнопок и расставлять.

Gleb
06.09.2017
11:06:14
Кто то уже выпускал приложения с UrhoSharp?

Vladimir
06.09.2017
12:14:02
Господа, всем привет. Перевожу PCL проект на .NETStandart. Чтобы не огребать FileNotFoundException (при загрузке либ) перевел в Android-проекте работы с Nuget с package.config на PackageReference. В итоге проект перестал собираться, никак не может отыскать namespace System. Мб кто-то сталкивался, как это порешать?

Vladimir
06.09.2017
12:47:46
да

Kirill
06.09.2017
12:48:11
NETStandard.Library библиотека подключена?

Vladimir
06.09.2017
12:49:22
в Android проект - нет, подключена в кросс-платформенный.

разве нужно подключать, если она не нужна? В этом же и есть цель, отказаться от такого подхода, используя packageReference

Кита
06.09.2017
14:19:10
Что мешает написать обертку к констрейнтлэйаутам?

Kirill
06.09.2017
14:22:16
Что мешает написать обертку к констрейнтлэйаутам?
Думаю ему это будет не самая тривиальная задача, без опыта то..

Кита
06.09.2017
14:23:40
Ну хотя да

Kirill
06.09.2017
14:23:49
Плюс надо будет еще и вьюхи обрабатывать, создавать их рендереры из рендерера лейаута.. Проще свой Forms Layout реализовать

Google
Kirill
06.09.2017
14:24:25
Кстати я не встречал еще готовых оберток констреинтов для формс..

Кита
06.09.2017
14:47:14
Кстати я не встречал еще готовых оберток констреинтов для формс..
видимо это только предстоит сделать. но вообще наверное это потому что констрейнт лэйаут на обоих осях это элемент который очень гибок в дизайнере и менее гибок в коде. Проще всегда накидать правила для констрейнтов используя мышку и понятный UI нежели тоже самое “генерить” в код.

Kirill
06.09.2017
14:52:48
CompressLayout? впервые слышу
Roadmap видимо не смотришь) https://forums.xamarin.com/discussion/85747/xamarin-forms-feature-roadmap Хотя я чть неверно назвал. Layout Compression LayoutCompression allows multiple layers of Xamarin.Forms layouts to be packed into a single native one.

Кита
06.09.2017
14:54:33
Roadmap видимо не смотришь) https://forums.xamarin.com/discussion/85747/xamarin-forms-feature-roadmap Хотя я чть неверно назвал. Layout Compression LayoutCompression allows multiple layers of Xamarin.Forms layouts to be packed into a single native one.
я не верю что это поможет. vNext2 (est. Q1 2018) - как ждать второго пришествия Христа. Новый код неизбежно породит новые баги

Ivan
06.09.2017
15:12:45
как у вас заведено таймеры крутить, если работать в мэйн треде? IEnumerator или есть что-то симпатичней?

Kirill
06.09.2017
15:15:53
я не верю что это поможет. vNext2 (est. Q1 2018) - как ждать второго пришествия Христа. Новый код неизбежно породит новые баги
Ну по идее, если верить описанию, то делай сколько угодно вложенных лейаутов, а на выходе будет 1 лейаут, в котором все вьюхи размещены. Если так, то поможет хорошо, но ждать да, долго еще

Ivan
06.09.2017
15:16:13
И второй вопрос сразу: каким методом могу отловить первую отрисовку UI? То есть main page отрисовалась и мне нужно по текущим данным её элементов внести корректировки (да, всё ещё решаю проблему с размерами -1)

Ivan
06.09.2017
15:16:52
Device.Timer? Есть ещё PCL Dispatch Timer
я имею в виду таймер, который бы фоново работал и выполнял ивент по завершению, это они?

Ivan
06.09.2017
15:17:42


Kirill
06.09.2017
15:18:11
Ivan
06.09.2017
15:18:35
у меня во всех функция OnStart(), App() и OnCreate() размеры всех UI элементов равны -1. Но мне нужно кнопки сделать квадратными, для этого нужно получить текующий width и задать height по нему

а текущий Width == -1

Kirill
06.09.2017
15:18:58
В лейаут приходит его размер, дальше отталкиваясь от этого размера отрисовываешь там все вьюхи проставля им размер и позицию

Google
Kirill
06.09.2017
15:19:39
Ivan
06.09.2017
15:19:47
да, так и делал

но как будет вести себя на разных разрешениях? Где-то скукожится в центре, где-то выйдет за пределы, верно?

Кита
06.09.2017
15:20:20
используй рэлейтив лэйаут

Ivan
06.09.2017
15:20:24
поэтому и стараюсь не отталкиваться от констант

Кита
06.09.2017
15:20:25
ну написали же

Max
06.09.2017
15:20:28
https://developer.xamarin.com/guides/xamarin-forms/user-interface/layouts/custom/ напиши свой лейаут, будет работать и быстрее и точнее и не удет дерганий размеров
Хмм, недавно искал как можно можно Stack накренить на бок и нашел FlowView... Но чет он меня не впечатлил (Делаю типо мини-галереи на 0-10 фото, с прокруткой, сами пикчи из ffimg), только вот это все добро, как только запускаю пару блоб реквестов благополучно начинает лагать при перелистывании

Ivan
06.09.2017
15:21:37
используй рэлейтив лэйаут
окей, попробую изменить свой подход к этой задаче согласно советам. Но всё равно смущает проблема, что при старте приложения не могу получить размеры UI-элементов, вот и хочу докопаться до истины, как же их можно получить

Kirill
06.09.2017
15:21:42
Max
06.09.2017
15:21:56
Не устраивает - Реализуй сам))
Ну я вот и думаю, есть ли какие-нибудь сторонние норм контролы

Ivan
06.09.2017
15:22:41
а их и не надо получать, фишка в том что тебе нужно начать мыслить не так как мыслят в Unity
ну, эта задача была бы решена ещё вчера, если бы можно было получать)

Ivan
06.09.2017
15:23:19
если продолжать добивать StackLayout

Max
06.09.2017
15:24:21
А есть варик как-нибудь ListView развернуть на 90°?)))

Кита
06.09.2017
15:24:24
ну, эта задача была бы решена ещё вчера, если бы можно было получать)
суть в том что ты должен ответить на вопрос а какой дизайн ты реализуешь, на сколько он UserInteractive и на сколько он динамичен, в зависимости от этого ты должен будешь выбрать инструмент

Kirill
06.09.2017
15:24:25
а вот это вот то, что очень похоже на выход
Но это неправильный подход. В таком случае у тебя сперва отобразится экран с кнопками стандартного размера, потом ты посчитаешь их размер и потом перерисуются уже твоего размера, и они при отображении будут дергаться

Google
Max
06.09.2017
15:24:59
Rotation?
Вопрос в том, насколько это производительно

Kirill
06.09.2017
15:25:19
если продолжать добивать StackLayout
Забей на StackLayout, он тебене нужен тут, или Relative или кастомный и ни как иначе. Не говнокодь

Kirill
06.09.2017
15:25:36
Вопрос в том, насколько это производительно
Да думаю не должно быть проблем. Ну плюс можно использовать RecyclerView от тех же TwinTech и там вроде была поддержка горизонтальной прокрутки

Ivan
06.09.2017
15:27:04
Kirill
06.09.2017
15:27:27
Убедили)

Кита
06.09.2017
15:28:42
@korsour Суть в том что ты должен уметь описывать макет экрана не зная какого он реально будет размера. Он может быть любого. Ты должен уметь задать посредством метаописателей языка xaml разметку и правила растяжения на все возможные экраны. Если тебе нужно заметное изменение положения элементов с течением времени - тебе нужны анимации вьюх. Но узнавать координаты каждого из элементов нужно в очень редких крайних случаях для решения не самых распространенных задач

Ivan
06.09.2017
15:28:42
ахах, вроде того)

Max
06.09.2017
15:31:35
Да думаю не должно быть проблем. Ну плюс можно использовать RecyclerView от тех же TwinTech и там вроде была поддержка горизонтальной прокрутки
Вот меня волнует вопрос уже не первый месяц, почему когда указываешь Cached Strategy решарпер ругается. Но конструктор то такой там можно описать, а если делаем кастомный с обязательным cached, то Xaml его не видит. И вообще, стандартный list view собирается с cached strategy красным, но работает ли оно ?

Max
06.09.2017
15:36:52
Работает, но да, ругается. Просто игнорируй.
??? Я всегда ставил, но были сомнения

Страница 168 из 619