פריסה יחסית
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
רוצה לנסות את שיטת הכתיבה?
'Jetpack פיתוח נייטיב' היא ערכת הכלים המומלצת לממשק המשתמש ל-Android. הסבר איך עובדים עם פריסות ב'כתיבה'.
RelativeLayout
היא קבוצת תצוגה שמציגה צפיות צאצא באופן יחסי
במיקומי המודעות החדשים. ניתן לציין את המיקום של כל תצוגה ביחס לרכיבי אח (למשל
מימין או מתחת לתצוגה אחרת) או במיקומים ביחס לאזור ההורה RelativeLayout
(למשל מיושר למטה, שמאלה או למרכז).
הערה:
כדי לקבל תמיכה טובה יותר בביצועים ובכלים, מומלץ ליצור את הפריסה באמצעות ConstraintLayout.
RelativeLayout
הוא כלי עוצמתי מאוד לעיצוב ממשק משתמש
כי היא יכולה לבטל קבוצות של תצוגות בתוך קבוצות ולהשאיר את היררכיית הפריסה שטוחה, דבר ששיפור
או של ביצועים. אם מצאת את עצמך משתמש בכמה קבוצות LinearLayout
מקוננות,
ייתכן שתהיה לך אפשרות להחליף אותם ב-RelativeLayout
אחד.
ממקם את התצוגות
RelativeLayout
מאפשר לתצוגות הצאצא לציין את המיקום שלהן ביחס
תצוגה מפורטת של ההורה או אחד לשני (מצוין לפי מזהה). כך אפשר ליישר שני רכיבים לפי גבול ימני,
להפוך אחת מתחת לאחרת, במרכז המסך, במרכז השמאלי וכן הלאה. כברירת מחדל, כל הצאצאים
התצוגות מצוירות בפינה השמאלית העליונה של הפריסה, כך שצריך להגדיר את המיקום של כל תצוגה
באמצעות מאפייני הפריסה השונים שזמינים מ-RelativeLayout.LayoutParams
.
חלק ממאפייני הפריסה הרבים שזמינים לתצוגות ב-RelativeLayout
כוללים:
android:layout_alignParentTop
- אם במקרה
"true"
, הקצה העליון של התצוגה הזו תואם לקצה העליון של תבנית ההורה.
android:layout_centerVertical
- אם
"true"
, הילד או הילדה מוגדרים בצורה אנכית בתוך ההורה שלהם.
android:layout_below
- ממקם את הקצה העליון של התצוגה הזו מתחת לתצוגה שצוינה באמצעות מזהה משאב.
android:layout_toRightOf
- ממקם את הקצה השמאלי של התצוגה הזאת מימין לתצוגה שצוינה באמצעות מזהה משאב.
אלה רק כמה דוגמאות. כל מאפייני הפריסה מתועדים ב-RelativeLayout.LayoutParams
.
הערך של כל נכס פריסה הוא בוליאני של
להפעיל מיקום פריסה ביחס לתבנית ההורה RelativeLayout
או למזהה
מפנה לתצוגה אחרת בפריסה שאליה יש למקם את התצוגה.
בפריסת ה-XML אפשר להצהיר על יחסי תלות עם תצוגות אחרות בפריסה בכל סדר שתרצו.
לדוגמה, אפשר להצהיר כי "view1" להיות ממוקם מתחת ל-"view2" גם אם "view2" היא האחרונה
לתצוגה המוצהרת בהיררכיה. הדוגמה הבאה ממחישה תרחיש כזה.
דוגמה
מודגש כל אחד מהמאפיינים שקובעים את המיקום היחסי של כל תצוגה.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp" >
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/reminder" />
<Spinner
android:id="@+id/dates"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_below="@id/name"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/times" />
<Spinner
android:id="@id/times"
android:layout_width="96dp"
android:layout_height="wrap_content"
android:layout_below="@id/name"
android:layout_alignParentRight="true" />
<Button
android:layout_width="96dp"
android:layout_height="wrap_content"
android:layout_below="@id/times"
android:layout_alignParentRight="true"
android:text="@string/done" />
</RelativeLayout>
בכתובת RelativeLayout.LayoutParams
אפשר לקרוא פרטים על כל מאפייני הפריסה הזמינים לכל תצוגת צאצא של RelativeLayout
.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-07-27 (שעון UTC)."],[],[],null,["# Relative Layout\n\nTry the Compose way \nJetpack Compose is the recommended UI toolkit for Android. Learn how to work with layouts in Compose. \n[ConstraintLayout in Compose →](/jetpack/compose/layouts/constraintlayout) \n\n[RelativeLayout](/reference/android/widget/RelativeLayout) is a view group that displays child views in relative\npositions. The position of each view can be specified as relative to sibling elements (such as to\nthe left-of or below another view) or in positions relative to the parent [RelativeLayout](/reference/android/widget/RelativeLayout) area (such as aligned to the bottom, left or center).\n\n**Note:**\nFor better performance and tooling support, you should instead [build your layout with ConstraintLayout](/training/constraint-layout).\n\nA [RelativeLayout](/reference/android/widget/RelativeLayout) is a very powerful utility for designing a user interface\nbecause it can eliminate nested view groups and keep your layout hierarchy flat, which improves\nperformance. If you find yourself using several nested [LinearLayout](/reference/android/widget/LinearLayout) groups,\nyou may be able to replace them with a single [RelativeLayout](/reference/android/widget/RelativeLayout).\n\nPositioning Views\n-----------------\n\n[RelativeLayout](/reference/android/widget/RelativeLayout) lets child views specify their position relative to the\nparent view or to each other (specified by ID). So you can align two elements by right border, or\nmake one below another, centered in the screen, centered left, and so on. By default, all child\nviews are drawn at the top-left of the layout, so you must define the position of each view\nusing the various layout properties available from [RelativeLayout.LayoutParams](/reference/android/widget/RelativeLayout.LayoutParams).\n\nSome of the many layout properties available to views in a [RelativeLayout](/reference/android/widget/RelativeLayout)\ninclude:\n\n[`android:layout_alignParentTop`](/reference/android/widget/RelativeLayout.LayoutParams#attr_android:layout_alignParentTop)\n: If `\"true\"`, makes the top edge of this view match the top edge of the parent.\n\n[`android:layout_centerVertical`](/reference/android/widget/RelativeLayout.LayoutParams#attr_android:layout_centerVertical)\n: If `\"true\"`, centers this child vertically within its parent.\n\n[`android:layout_below`](/reference/android/widget/RelativeLayout.LayoutParams#attr_android:layout_below)\n: Positions the top edge of this view below the view specified with a resource ID.\n\n[`android:layout_toRightOf`](/reference/android/widget/RelativeLayout.LayoutParams#attr_android:layout_toRightOf)\n: Positions the left edge of this view to the right of the view specified with a resource ID.\n\nThese are just a few examples. All layout attributes are documented at [RelativeLayout.LayoutParams](/reference/android/widget/RelativeLayout.LayoutParams).\n\nThe value for each layout property is either a boolean to\nenable a layout position relative to the parent [RelativeLayout](/reference/android/widget/RelativeLayout) or an ID that\nreferences another view in the layout against which the view should be positioned.\n\nIn your XML layout, dependencies against other views in the layout can be declared in any order.\nFor example, you can declare that \"view1\" be positioned below \"view2\" even if \"view2\" is the last\nview declared in the hierarchy. The example below demonstrates such a scenario.\n\nExample\n-------\n\nEach of the attributes that control the relative position of each view are emphasized. \n\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cRelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:layout_width=\"match_parent\"\n android:layout_height=\"match_parent\"\n android:paddingLeft=\"16dp\"\n android:paddingRight=\"16dp\" \u003e\n \u003cEditText\n android:id=\"@+id/name\"\n android:layout_width=\"match_parent\"\n android:layout_height=\"wrap_content\"\n android:hint=\"@string/reminder\" /\u003e\n \u003cSpinner\n android:id=\"@+id/dates\"\n android:layout_width=\"0dp\"\n android:layout_height=\"wrap_content\"\n android:layout_below=\"@id/name\"\n android:layout_alignParentLeft=\"true\"\n android:layout_toLeftOf=\"@+id/times\" /\u003e\n \u003cSpinner\n android:id=\"@id/times\"\n android:layout_width=\"96dp\"\n android:layout_height=\"wrap_content\"\n android:layout_below=\"@id/name\"\n android:layout_alignParentRight=\"true\" /\u003e\n \u003cButton\n android:layout_width=\"96dp\"\n android:layout_height=\"wrap_content\"\n android:layout_below=\"@id/times\"\n android:layout_alignParentRight=\"true\"\n android:text=\"@string/done\" /\u003e\n\u003c/RelativeLayout\u003e\n```\n\nFor details about all the layout attributes available to each child view of a [RelativeLayout](/reference/android/widget/RelativeLayout), see [RelativeLayout.LayoutParams](/reference/android/widget/RelativeLayout.LayoutParams)."]]