Я разработал приложение с целевым API как 15. Макет включает в себя макет сетки. Теперь, когда я меняю Target API на 10, я получаю проблемы с макетом сетки и другим "пространством" элемента. Eclipse предлагает мне загрузить поддерживающую библиотеку для 2.3.3, что я сделал... Но все еще проблема.
Поддержка Grid Layout в API android API 10
Ответ 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:+'
}
Ответ 3
Или другой альтернативой является сторонняя обратная совместимая реализация:
Это совместимо с уровнем API 3, если вам нужно зайти так далеко, а также включить виджет Space.