2013-08-17 4 views
-1

Я видел другие вопросы, рассматривающие это, но ответ, казалось, не соответствовал моей проблеме, поэтому я подумал, что спрошу себя.Простая компоновка Android Пояснение

Я разработал небольшое приложение для Android и первоначально протестировал его против эмулятора Galaxy Nexus. Затем я тестировал его на Galaxy S4. В конце концов я хотел сделать его доступным на более широком количестве устройств и начал внедрять некоторые из библиотек поддержки.

Когда я пошел, чтобы проверить это, я начал использовать образ эмулятора Nexus S 2.3, и я понял, что мой макет превысил экран. Глядя на размеры экрана двух «устройств», это имело смысл. Поэтому я бы создал другой макет (или, возможно, другой strings.xml с более короткими именами ярлыков, но пока мы просто сосредоточимся на макетах), которые будут использоваться Nexus S.

К сожалению, я не могу найдите имя папки, которое заставляет Nexus S забирать его, пока Galaxy Nexus этого не делает.

Более того, я даже не уверен, что это считается хорошим дизайном. Я думаю, что, возможно, я читал, что, в общем, телефоны (vs tablets и т. Д.) Должны использовать один и тот же макет (хотя, честно говоря, это неправильно для меня).

Может кто-нибудь объяснить поведение, которое я вижу, и сказать, как я это настроил, поэтому у меня есть другой макет для двух устройств (или почему это плохая идея)?

Возможно, комбинация этих двух поможет. Возможно, проблема заключается в том, что я пытался создать макет для более мелких устройств для таргетинга на Nexus S, когда на самом деле он считается «нормальным», и я должен был создать макет для таргетинга на «большую» Galaxy Nexus ...

Galaxy Nexus
Nexus S

Я также глядя на this

решаемые Просто, чтобы закрыть это, выше было именно то, что он принял. Вместо того, чтобы думать о Galaxy Nexus как о «нормальном» и Nexus S как об исключении, выясняется, что с точки зрения Android Nexus S более «нормальный», а Galaxy Nexus выйдет из «sw360dp» (макет- sw360dp, values-sw360dp), если он доступен. Таким образом, создание style.xml с моими регулярными размерами шрифтов в значениях sw360dp, а затем изменение шрифтов по умолчанию styles.xml на меньшие значения сделало трюк.

+0

http://developer.android.com/guide/practices/screens_support.html. проверьте это поможет – Raghunandan

+0

Я ценю это, но это действительно не помогает мне с практической стороны реализации этого для двух устройств, как я описал. См. Мои другие комментарии. – Michael

ответ

0

Вы должны сделать другой макет в Рез папку, чтобы обеспечить расположение подходит для любого устройства, Просто скопировать и вставить XML, который создает проблему в другом макете т.е.

layout-large, layout-small и т.д., И после этого сделайте его исправленным, чтобы ваш xml вписывался в устройство,

FYI: телефоны ldpi извлекут ваш макет xml из вашего макета, поэтому вам не нужно беспокоиться о остальной части ваших устройств. Вот link that help you

+0

Я понимаю концепцию. Проблема заключается в том, чтобы реализовать это на практике и сделать это с практического примера, который я дал - Nexus S против Galaxy Nexus. – Michael

0

Рез/макет/my_layout.xml // макет для размера экрана (нормального "по умолчанию")

Реза/компоновщикаму малого/my_layout.xml // макет для небольшого размера экрана

res/layout-large/my_layout.XML // макет для размера большого экрана

Реза/макет XLarge/my_layout.xml // макет для очень большого размера экрана

Реза/макет XLarge-земля/my_layout.xml // макет для очень большого в альбомной ориентации

разреша/вытяжка-MDPI/my_icon.png // растровой для средней плотности

разреша/вытяжка-ИПЧР/my_icon.png // растровой для высокой плотности

разреша/вытяжка-xhdpi /my_icon.png // растровое изображение для сверхвысокой плотности

Это лучший подход в соответствии с рекомендациями по дизайну, установленными для лучших практик Android UI.

+0

Я понимаю это. Моя проблема в том, что я не могу найти соглашение об именах папок макета, которое будет подхвачено одним из этих двух очень разных устройств, но не другим. – Michael

Смежные вопросы