web-dev-qa-db-ja.com

相対レイアウトalignParentLeftとalignParentStart

したがって、相対レイアウトの使用には慣れていますが、Android Studioに慣れている間、相対レイアウトの子ビューで次の両方が生成されることに気付きました。

Android:layout_alignParentLeft="true"
Android:layout_alignParentStart="true

私はAndroid docs here を確認しましたが、2つの違いを確認できません。Android = Studioに目に見える違いはありません。違いはありますか?

15
Andrew S

レイアウトの方向によって異なります。レイアウトの方向は、左から右(開始=左、終了=右)、または右から左(その逆)のいずれかです。

デフォルトでは、レイアウトの方向はロケール(英語などの言語では左から右、アラビア語などの言語では右から左)に基づいていますが、 layoutDirection XML属性で上書きできますまたは setLayoutDirection 関数。例えば。:

Android:layoutDirection="ltr"   

^は、すべてのデバイスでalignParentStartをalignParentLeftと同等にします。

Android:layoutDirection="rtl"   

^は、すべてのデバイスでalignParentStartをalignParentRightと同等にします。 「ロケール」に設定してロケールを使用するか、「継承」に設定して親ビューからレイアウト方向を継承することもできます。

追加する必要がありますAndroid:supportsRtl="true"をAndroidManifest.xmlに追加して、右から左へのレイアウトをサポートします。

関連: Android:textDirection

13
samgak
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"
/>
5
Ravi Thapliyal

これらの「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」が使用されます。

1
Carlos Parker