ターゲットAPIを15としてアプリを開発しました。レイアウトにはグリッドレイアウトが含まれています。ターゲットAPIを10に変更すると、グリッドレイアウトと別の要素「スペース」で問題が発生します。 Eclipseは、2.3.3のサポートライブラリをダウンロードするように要求します。これは私が行いました...しかし、まだ問題があります。
GridLayout
は、APIレベル7以上と互換性があるように実際にバックポートされています。これは(一種の)サポートライブラリの一部です。サポートライブラリをダウンロードすると、次の場所にあるローカルSDKフォルダーにAndroidライブラリプロジェクトがあります。
<sdk_folder>\extras\Android\compatibility\v7\gridlayout
作業中のプロジェクトの依存関係として設定します。その後、ICS以前のデバイスをサポートするために、プロジェクト全体の参照をレベル15バージョンからこの互換性バージョンに変更する必要があります。レイアウトファイルで、xmlをGridLayoutからAndroid.support.v7.widget.GridLayoutに変更します。使用法は、同一ではないにしても、類似している必要があります。
Space
ウィジェットについて:これは(まだ)実際には使用していませんが、既存のビューにマージン/パディングを設定するか、追加することで置き換えることができるようです。完全に透過的な独自の汎用View
で。
Android Studioの場合、サポートライブラリをダウンロードしたら(@MH。で説明)、File->Import Module...
を使用して、GridLayoutサポートの場所を選択する必要があります。ここにあります:<sdk_folder>\extras\Android\support\v7\gridlayout
。
次に、xmlレイアウトファイルで<Gridlayout>
を使用する代わりに、<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"
>
レイアウト内の要素は、上記および子要素で見られるように、GridLayoutプロパティに対してapp
ではなくAndroid
を参照します。
<TextView
Android:textSize="32dip"
app:layout_columnSpan="4"
app:layout_gravity="center_horizontal"
/>
最後に、GridLayoutサポートライブラリ参照を\src\build.gradle
のdependencies
セクションに追加する必要があります。
dependencies {
compile 'com.Android.support:appcompat-v7:+'
compile 'com.Android.support:gridlayout-v7:+'
}
または別の代替手段はこれです サードパーティの下位互換性のある実装:
これは、APIレベル3に戻る必要がある場合は互換性があり、Spaceウィジェットも含まれています。