Виджет не заполняет всю ячейку на планшете

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

Когда я загружаю виджет на экран меньшего размера, такой как мой Samsung Galaxy S, он заполняет все пространство ячейки, но на моем планшете кажется, что вокруг макета виджета большие поля или отступы, которые не позволяют ему заполнить всю ячейку, но многие из моих другие виджеты, которые я загрузил, заполняют всю область ячеек 2x2 на моем планшете.

Вот код, который я использую для размера виджета.

<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:initialLayout="@layout/widget"
    android:minHeight="146dp"
    android:minResizeHeight="146dp"
    android:minResizeWidth="146dp"
    android:minWidth="146dp"
    android:resizeMode="horizontal|vertical"
    android:updatePeriodMillis="10000" >

</appwidget-provider>

И код самой раскладки виджета:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:id="@+id/layout" android:background="@drawable/yellow">

    <TextView android:id="@+id/TextView01" android:layout_width="match_parent"
        android:layout_height="match_parent" style="@android:style/TextAppearance.Medium"
        android:layout_gravity="center" android:textColor="#000000"></TextView>

</LinearLayout>

Я также пытался добавить это в манифест, но это не решило проблему.

<supports-screens
    android:smallScreens="true"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true"
    android:anyDensity="true" />

Что мне не хватает, чтобы мой виджет не заполнял всю область ячейки на планшете?

Скриншот сравнения виджетов


person Gatekeeper    schedule 17.08.2012    source источник
comment
Какие операционные системы у устройств? Особое внимание следует уделить устройствам с версией 4.0+.   -  person Eric    schedule 17.08.2012
comment
Ага. Мой Galaxy S — это Android 2.2, но мой планшет — 4.0. Какие особые соображения мне необходимо принять во внимание?   -  person Gatekeeper    schedule 17.08.2012
comment
Проблема кратко описана здесь. Решение можно найти здесь. Если это решит проблему, я опубликую ее в формате ответа для вас.   -  person Eric    schedule 17.08.2012
comment
Хорошо, в нем говорится: начиная с Android 4.0, виджеты приложений автоматически получают отступы между рамкой виджета и ограничивающей рамкой виджета приложения. Я думаю, что это проблема, я хотел бы избавиться от автоматического заполнения, которое добавляет Android 4.0+, просто установив padding=0dp только делает так, что дополнительное заполнение не добавляется, но не удаляет автоматическое заполнение. Хотя ссылка отличная! знак равно   -  person Gatekeeper    schedule 17.08.2012
comment
Боюсь, автоматическое заполнение нельзя удалить. Это часть реализации проекта ICS. Извиняюсь. знак равно   -  person Eric    schedule 18.08.2012
comment
Тогда как другие виджеты, которые у меня есть, заполняют всю область ячейки на моем планшете 4.0?   -  person Gatekeeper    schedule 18.08.2012
comment
Они не должны быть в состоянии, если только вы не получаете больше набивки, чем я предполагаю. Можете показать сравнение скриншотов?   -  person Eric    schedule 18.08.2012
comment
Ок обновил скриншотом. Другой виджет имеет немного меньше отступов со всех сторон по сравнению с моим, особенно сверху вниз.   -  person Gatekeeper    schedule 18.08.2012
comment
Если вы отрегулируете android:minHeight и тому подобное, вы можете расширить его, чтобы заполнить эту область?   -  person Eric    schedule 18.08.2012
comment
ну я тоже так пробовал. все, что находится в диапазоне 2x2, соответствует размеру моего виджета. Даже если я изменю minHeight как в appwidget-provider, так и в linearlayout   -  person Gatekeeper    schedule 18.08.2012
comment
Тогда, боюсь, у меня закончились идеи, извините. :\   -  person Eric    schedule 18.08.2012


Ответы (1)


Решение найдено! Вам просто нужно добавить

<uses-sdk android:targetSdkVersion="8" />

в манифест. Все, что ниже targetSdk 14, будет работать и позволит вам использовать всю область ячейки, поскольку автоматическое заполнение виджетов не было реализовано до Android 4.0 - API 14.

person Gatekeeper    schedule 18.08.2012