Arrangement and alignment help you place items neatly on the screen. They make your app look organized and easy to use.
Arrangement and alignment in Android Kotlin
LinearLayout( android:orientation = "vertical" or "horizontal", android:gravity = "center" or "start" or "end", android:layout_gravity = "center" or "start" or "end" )
orientation decides if items stack vertically or horizontally.
gravity aligns content inside the layout.
<LinearLayout android:orientation="vertical" android:gravity="center"> <!-- child views here --> </LinearLayout>
<LinearLayout android:orientation="horizontal" android:gravity="start"> <!-- child views here --> </LinearLayout>
<LinearLayout android:orientation="vertical" android:gravity="end"> <!-- child views here --> </LinearLayout>
This app creates a horizontal layout with three buttons vertically centered inside the layout. The buttons appear side by side, packed to the left.
import android.os.Bundle import android.widget.Button import android.widget.LinearLayout import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val layout = LinearLayout(this).apply { orientation = LinearLayout.HORIZONTAL gravity = android.view.Gravity.CENTER_VERTICAL layoutParams = LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT ) } val button1 = Button(this).apply { text = "Left" } val button2 = Button(this).apply { text = "Center" } val button3 = Button(this).apply { text = "Right" } layout.addView(button1) layout.addView(button2) layout.addView(button3) setContentView(layout) } }
Use LinearLayout for simple horizontal or vertical arrangements.
Use gravity to align content inside the layout, and layout_gravity to align the layout itself inside its parent.
For more complex layouts, consider ConstraintLayout or GridLayout.
Arrangement controls how items are stacked or placed side by side.
Alignment controls where items appear inside their container.
Use LinearLayout with orientation and gravity for basic layout control.
Practice
LinearLayout controls whether items are stacked vertically or horizontally?Solution
Step 1: Understand
TheLinearLayoutpropertiesorientationproperty defines if children are stacked vertically or horizontally.Step 2: Differentiate from other properties
gravitycontrols alignment inside the container, not stacking direction.Final Answer:
orientation-> Option CQuick Check:
Stack direction = orientation [OK]
- Confusing gravity with orientation
- Thinking padding controls stacking
- Mixing layout_width with arrangement
LinearLayout using gravity in Kotlin XML?Solution
Step 1: Identify property for child alignment inside container
android:gravityaligns children inside theLinearLayout.Step 2: Check syntax correctness
android:gravity="center"is the correct attribute and value to center children.Final Answer:
android:gravity="center"-> Option BQuick Check:
Center children = android:gravity="center" [OK]
- Using layout_gravity instead of gravity for children
- Setting orientation to center (invalid)
- Using non-existent align attribute
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical">
<Button android:text="A" />
<Button android:text="B" />
</LinearLayout>
How will the buttons be arranged on the screen?Solution
Step 1: Analyze orientation property
android:orientation="horizontal"means children are placed side by side horizontally.Step 2: Analyze gravity property
android:gravity="center_vertical"aligns children vertically centered inside the container.Final Answer:
Buttons side by side horizontally and centered vertically -> Option AQuick Check:
Horizontal orientation + center_vertical gravity = Buttons side by side horizontally and centered vertically [OK]
- Confusing orientation with gravity effects
- Assuming vertical stacking with horizontal orientation
- Ignoring gravity vertical centering
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</LinearLayout>Solution
Step 1: Understand gravity vs layout_gravity
android:gravityon LinearLayout aligns children inside it;layout_gravityaligns the child itself inside its parent.Step 2: Check redundancy in this context
Since LinearLayout hasgravity="center_horizontal", the child TextView is already centered horizontally, solayout_gravity="center"on TextView is unnecessary.Final Answer:
layout_gravity="center" on TextView is redundant here -> Option AQuick Check:
Redundant layout_gravity when parent gravity centers children [OK]
- Thinking orientation="vertical" is invalid
- Confusing gravity and layout_gravity roles
- Missing closing tags (actually present here)
LinearLayout that stacks three buttons vertically, but the middle button should be aligned to the right edge while the others are centered horizontally. Which arrangement and alignment setup achieves this?Solution
Step 1: Set vertical stacking
orientation="vertical"stacks buttons top to bottom.Step 2: Center all buttons horizontally by default
Setgravity="center_horizontal"on LinearLayout to center children horizontally.Step 3: Align middle button to right edge
Override middle button's alignment withlayout_gravity="end"to push it to the right.Final Answer:
orientation="vertical", gravity="center_horizontal", layout_gravity="end" on middle button -> Option DQuick Check:
Vertical stack + center default + override middle button end [OK]
- Using horizontal orientation instead of vertical
- Setting gravity="end" on parent causing all children right aligned
- Not overriding middle button alignment
Ready to prove it?
Pass the test and this pattern moves unknown
