Расхождения в Xamarin Android Padding и Layout - PullRequest
0 голосов
/ 06 декабря 2018

Я программирую приложение для Android с помощью Xamarin и Visual Studio.Я заметил, что когда дело доходит до отступов и полей (через xaml), макеты иногда выглядят очень по-разному в конструкторе и в разных версиях Android.Например, использование paddingVertical и paddingHor Horizontal в ImageButton работает в дизайнере, но в эмуляторе и на моих тестовых устройствах это никогда не работало, вместо этого мне пришлось использовать paddingLeft, paddingTop и т. Д.Когда дело доходит до полей - я заметил, что простая схема без указания полей реализована с большим количеством полей на моем устройстве Lollipop, но без полей на моем устройстве Nougat.Есть ли способ предвидеть, как будут выглядеть макеты, независимо от версии Android, и, кроме того, есть ли документация о том, какие атрибуты работают с какой версией Android?Документация для paddingVertical не позволила мне понять, почему он не работает на устройствах.

Любая помощь будет принята с благодарностью:)

1 Ответ

0 голосов
/ 07 декабря 2018

Добро пожаловать в мир Android фрагментации!

Тема по умолчанию (которая устанавливает цвета и другие атрибуты макета) варьируется в зависимости от уровня API, так что по умолчанию приложения будут согласованными, выглядит мудрым, как и версия Android, на которой она работает.

Это даже не касается того факта, что Samsung, HTC, LG и т. Д. Каждый добавляет что-то поверх «ванильной» ОС Android (это с открытым исходным кодом, так что любой может изменить Android так, как ему нравится),И да, некоторые атрибуты макета присутствуют в некоторых версиях, а не в других, следовательно, это библиотеки поддержки, которые предназначены для того, чтобы позволить разработчику использовать более новые функции / классы в более старых версиях ОС.Справочник по Android API должен показывать, когда был добавлен определенный атрибут.Например: https://developer.android.com/reference/android/widget/Toolbar.html#attr_android:gravity

В приведенной выше ссылке видно, что класс панели инструментов был добавлен в Android API уровня 21 (Lollipop)

Все атрибуты находятся в классе R.attr: *Например, 1010 *https://developer.android.com/reference/android/R.attr

paddingVertical не был добавлен до уровня API 26: https://developer.android.com/reference/android/R.attr.html#paddingVertical

Так что, если устройство имеет версию

Тогда возникает проблема Тем.Вы просматриваете макет с той же темой, которую использует ваше приложение при работе в дизайнере?Вы можете выбрать, какую версию Android и тему вы хотите отобразить при просмотре макета в конструкторе:

Choose Android version in designer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...