Один и тот же макет не похож на большой экран между Android 2.3 и 4.x.

[Обновление] Спасибо Кай, эта проблема вызвана @dimen/activity_vertical_margin в XML. Значение по умолчанию dimens.xml составляет 128dp в values-sw720dp-land. (другие 16dp).


Я создаю новый пустой проект и запускаю его на Android 4.2 и 2.3 (с экраном Xlarge 10,1 дюйма WXGA 1280 x 800). Вот снимок экрана. Почему экран «Android 4.x» и «XLARGE» вызывает отступ содержимого ?

Android 2.3(Android 2.3) Android 4.2 (Android 4.2)


person Shawn Wang    schedule 31.07.2013    source источник
comment
Кнопка «Отмена» — единственное, что неправильно в вашем макете? Пожалуйста, покажите нам свой макет xml, а также любой код для вашего макета диалогового окна.   -  person Stephan Branczyk    schedule 31.07.2013
comment
Есть ли причина, по которой вы не используете "wrap_content" или weight? Либо может помочь   -  person codeMagic    schedule 31.07.2013
comment
См. новое обновление для снимка экрана пустого проекта.   -  person Shawn Wang    schedule 31.07.2013


Ответы (2)


Помимо использования квалификатора Xlarge для layouts, вы также можете использовать номера версий. Я не уверен, почему это будет по-другому, если это то же разрешение и размер экрана, но вы также можете использовать квалификаторы версии для ваших папок layout.

Итак, у вас может быть один в res/layout-v15 (4.x) и один в `res/layout-xlarge (поскольку он работает в 2.3)

Это должно заставить устройства с использованием 4.x использовать layout-v15, а все, что ниже с соответствующим размером экрана, будет использовать layout-xlarge. Я не знаю, решит ли это все ваши проблемы, но это может помочь.

person codeMagic    schedule 31.07.2013
comment
Спасибо за ваш ответ. Он хорошо работает в Android 2.3 (с той же раскладкой). Я ничего не модифицировал для Android 4.x. Поэтому, если я создам новый res/layout-v15, он будет включать те же макеты, что и res/layout-xlarge. - person Shawn Wang; 31.07.2013
comment
Да, но вы можете настроить эти макеты, чтобы они выглядели правильно на устройствах 4.3. - person codeMagic; 31.07.2013
comment
Хорошо, я вижу. Но правда в том, что даже если я поставлю элемент с alignParentLeft, он все равно будет иметь отступ. Может быть, я могу попробовать marginLeft=-20dp?! это слишком странно - person Shawn Wang; 31.07.2013
comment
Может быть. Но почему у вас там такие invisible View, как fake. Они все еще занимают место. Если вы этого не хотите, вам нужно изменить их visibility на gone. - person codeMagic; 31.07.2013
comment
У меня есть 4 кнопки на главном экране. Я просто хочу, чтобы они были хорошо организованы. Поэтому я использую невидимый поддельный элемент, чтобы он был centerVertical=true, и позволяю другим кнопкам выравниваться по нему. - person Shawn Wang; 31.07.2013
comment
Что произойдет, если вы используете wrap_content вместо width ваших Button? - person codeMagic; 31.07.2013
comment
См. новое обновление для снимка экрана пустого проекта. - person Shawn Wang; 31.07.2013

Похоже, что к версии 4.x диалога применяются очень большие значения marginLeft и marginRight: введите здесь описание изображения

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

person Kai    schedule 31.07.2013
comment
Укажите все значения, которые может принимать activity_horizontal_margin. Кроме того, правильно ли выглядит ваш макет на экране макета Eclipse? - person Kai; 31.07.2013
comment
Спасибо. Проблема вызвана @dimen/activity_vertical_margin, а значение по умолчанию в values-sw720dp-land равно 128dp. (другие 16dp). Спасибо еще раз. - person Shawn Wang; 31.07.2013