Подтвердить что ты не робот

Поддержка Grid Layout в API android API 10

Я разработал приложение с целевым API как 15. Макет включает в себя макет сетки. Теперь, когда я меняю Target API на 10, я получаю проблемы с макетом сетки и другим "пространством" элемента. Eclipse предлагает мне загрузить поддерживающую библиотеку для 2.3.3, что я сделал... Но все еще проблема.

4b9b3361

Ответ 1

GridLayout действительно был включен, чтобы быть совместимым с уровнем API 7 и выше. Это (вроде) часть библиотеки поддержки. После того, как вы загрузите библиотеку поддержки, вы найдете проект библиотеки Android в своей локальной папке sdk, расположенной по адресу:

<sdk_folder>\extras\android\compatibility\v7\gridlayout

Настройте его как зависимость от проекта, над которым вы работаете. После этого вам нужно будет изменить ссылки на весь проект с версии 15 до этой совместимости, чтобы поддерживать устройства до ICS. В файлах Layout измените xml из GridLayout на android.support.v7.widget.GridLayout. Использование должно быть схожим, если не идентичным.

Что касается виджета Space: я на самом деле не использовал этот (пока), но, похоже, это то, что может быть заменяется либо настройкой поля/дополнения на существующие виды, либо добавлением в свой собственный общий View, который полностью прозрачен.

Ответ 2

Если вы используете Android Studio, как только вы загрузили библиотеку поддержки (как упоминалось в @MH), вы должны использовать File->Import Module..., затем выберите местоположение поддержки GridLayout, которая для меня была здесь: <sdk_folder>\extras\android\support\v7\gridlayout.

Затем вместо использования <Gridlayout> в вашем файле макета xml используйте <android.support.v7.widget.GridLayout>. Вот пример:

<android.support.v7.widget.GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:useDefaultMargins="true"
    app:alignmentMode="alignBounds"
    app:columnOrderPreserved="false"
    app:columnCount="4"
>

Элементы в макете будут ссылаться app вместо android на свойства GridLayout, как показано выше, и на дочерние элементы:

    <TextView
        android:textSize="32dip"
        app:layout_columnSpan="4"
        app:layout_gravity="center_horizontal"
    />

Наконец, ссылка на библиотеку поддержки GridLayout должна быть добавлена ​​в раздел dependencies \src\build.gradle:

dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.android.support:gridlayout-v7:+'
}