したがって、相対レイアウトの使用には慣れていますが、Android Studioに慣れている間、相対レイアウトの子ビューで次の両方が生成されることに気付きました。
Android:layout_alignParentLeft="true"
Android:layout_alignParentStart="true
私はAndroid docs here を確認しましたが、2つの違いを確認できません。Android = Studioに目に見える違いはありません。違いはありますか?
レイアウトの方向によって異なります。レイアウトの方向は、左から右(開始=左、終了=右)、または右から左(その逆)のいずれかです。
デフォルトでは、レイアウトの方向はロケール(英語などの言語では左から右、アラビア語などの言語では右から左)に基づいていますが、 layoutDirection XML属性で上書きできますまたは setLayoutDirection 関数。例えば。:
Android:layoutDirection="ltr"
^は、すべてのデバイスでalignParentStartをalignParentLeftと同等にします。
Android:layoutDirection="rtl"
^は、すべてのデバイスでalignParentStartをalignParentRightと同等にします。 「ロケール」に設定してロケールを使用するか、「継承」に設定して親ビューからレイアウト方向を継承することもできます。
追加する必要がありますAndroid:supportsRtl="true"
をAndroidManifest.xmlに追加して、右から左へのレイアウトをサポートします。
Android:layout_alignParentStart="true"
startthisビューのエッジをstart親のエッジに揃えます。これは左 LTR(左から右)ロケールのエッジであり、右は、アラビア語、ヘブライ語、ペルシア語などのRTL(右から左)ロケール言語のエッジです。
理由Android Studioも追加
Android:layout_alignParentLeft="true"
4.2.x Jelly bean
より前の古いプラットフォームをサポートすることです。 layout_alignParentStart
のようなStart/End属性は、API 17以降でのみ使用できます。新しいプラットフォームは、対応する開始/終了属性が見つからない場合にのみ左/右属性にフォールバックします。
レベルAndroid:minSdkVersion
より下の17
を使用してアプリケーションがレガシープラットフォームをサポートする場合、ビューに常にLeft/Right属性を提供する必要があります。そうしないと、プロジェクトは次のようなエラーメッセージでコンパイルされません。
API 17(プロジェクトでは7を指定)より古いバージョンをサポートするには、Android:layout_alignParentLeft = "true"も追加する必要があります
また、Androidアプリケーションは、AndroidManifest.xml
内のRTLロケールのサポートを宣言する必要があることにも注意してください。
<application
...
Android:supportsRtl="true"
/>
これらの「xxxStart」、「xxxEnd」属性は、一部のロケールでRTL(右から左)レイアウトをサポートするためのものです。といった
Android:paddingStart
Android:paddingEnd
Android:layout_marginStart
Android:layout_marginEnd
...
あなたはそれについて もっと見る を見ることができます。
通常(左から右)のレイアウトでは、「xxxStart」は「xxxLeft」、「xxxEnd」は「xxxRight」を意味しますが、右から左のレイアウトでは「xxxStart」は「xxxRight」、「xxxEnd」は「xxxLeft」を意味します。
ただし、RTLはSDK 17以降でのみサポートされています。
より低いSDKをサポートするには、「Android:layout_marginLeft」とともに「Android:layout_marginStart」を使用できます。下位SDKデバイスでは、「Android:layout_marginLeft」が使用されます。