Bird
Raised Fist0
Android Kotlinmobile~5 mins

Arrangement and alignment in Android Kotlin

Choose your learning style10 modes available
Introduction

Arrangement and alignment help you place items neatly on the screen. They make your app look organized and easy to use.

When you want buttons to appear side by side or stacked vertically.
When you want text or images centered on the screen.
When you want to space items evenly in a list or grid.
When you want to align items to the left, right, or center inside a container.
When you want your app layout to look good on different screen sizes.
Syntax
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.

Examples
This stacks items vertically and centers them inside the layout.
Android Kotlin
<LinearLayout
  android:orientation="vertical"
  android:gravity="center">
  <!-- child views here -->
</LinearLayout>
This arranges items side by side aligned to the left.
Android Kotlin
<LinearLayout
  android:orientation="horizontal"
  android:gravity="start">
  <!-- child views here -->
</LinearLayout>
This stacks items vertically aligned to the right.
Android Kotlin
<LinearLayout
  android:orientation="vertical"
  android:gravity="end">
  <!-- child views here -->
</LinearLayout>
Sample App

This app creates a horizontal layout with three buttons vertically centered inside the layout. The buttons appear side by side, packed to the left.

Android Kotlin
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)
  }
}
OutputSuccess
Important Notes

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.

Summary

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

(1/5)
1. Which property in a LinearLayout controls whether items are stacked vertically or horizontally?
easy
A. layout_width
B. gravity
C. orientation
D. padding

Solution

  1. Step 1: Understand LinearLayout properties

    The orientation property defines if children are stacked vertically or horizontally.
  2. Step 2: Differentiate from other properties

    gravity controls alignment inside the container, not stacking direction.
  3. Final Answer:

    orientation -> Option C
  4. Quick Check:

    Stack direction = orientation [OK]
Hint: Stacking direction is set by orientation property [OK]
Common Mistakes:
  • Confusing gravity with orientation
  • Thinking padding controls stacking
  • Mixing layout_width with arrangement
2. Which of the following is the correct syntax to center all child views inside a LinearLayout using gravity in Kotlin XML?
easy
A. android:orientation="center"
B. android:gravity="center"
C. android:layout_gravity="center"
D. android:align="center"

Solution

  1. Step 1: Identify property for child alignment inside container

    android:gravity aligns children inside the LinearLayout.
  2. Step 2: Check syntax correctness

    android:gravity="center" is the correct attribute and value to center children.
  3. Final Answer:

    android:gravity="center" -> Option B
  4. Quick Check:

    Center children = android:gravity="center" [OK]
Hint: Use android:gravity to align children inside layout [OK]
Common Mistakes:
  • Using layout_gravity instead of gravity for children
  • Setting orientation to center (invalid)
  • Using non-existent align attribute
3. Given this Kotlin XML snippet:
<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?
medium
A. Buttons side by side horizontally and centered vertically
B. Buttons stacked vertically aligned to bottom
C. Buttons side by side horizontally aligned to top
D. Buttons stacked vertically and centered horizontally

Solution

  1. Step 1: Analyze orientation property

    android:orientation="horizontal" means children are placed side by side horizontally.
  2. Step 2: Analyze gravity property

    android:gravity="center_vertical" aligns children vertically centered inside the container.
  3. Final Answer:

    Buttons side by side horizontally and centered vertically -> Option A
  4. Quick Check:

    Horizontal orientation + center_vertical gravity = Buttons side by side horizontally and centered vertically [OK]
Hint: Orientation sets direction; gravity sets alignment inside container [OK]
Common Mistakes:
  • Confusing orientation with gravity effects
  • Assuming vertical stacking with horizontal orientation
  • Ignoring gravity vertical centering
4. What is wrong with this Kotlin XML layout snippet?
<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>
medium
A. layout_gravity="center" on TextView is redundant here
B. Using both gravity and layout_gravity causes conflict
C. orientation="vertical" is invalid for LinearLayout
D. Missing closing tag for LinearLayout

Solution

  1. Step 1: Understand gravity vs layout_gravity

    android:gravity on LinearLayout aligns children inside it; layout_gravity aligns the child itself inside its parent.
  2. Step 2: Check redundancy in this context

    Since LinearLayout has gravity="center_horizontal", the child TextView is already centered horizontally, so layout_gravity="center" on TextView is unnecessary.
  3. Final Answer:

    layout_gravity="center" on TextView is redundant here -> Option A
  4. Quick Check:

    Redundant layout_gravity when parent gravity centers children [OK]
Hint: Parent gravity centers children; child layout_gravity may be redundant [OK]
Common Mistakes:
  • Thinking orientation="vertical" is invalid
  • Confusing gravity and layout_gravity roles
  • Missing closing tags (actually present here)
5. You want to create a 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?
hard
A. Set orientation="vertical" on LinearLayout, gravity="center_horizontal", and layout_gravity="center_horizontal" on the middle button
B. Set orientation="horizontal" on LinearLayout, gravity="center_vertical", and layout_gravity="end" on the middle button
C. Set orientation="vertical" on LinearLayout, gravity="end", and layout_gravity="center_horizontal" on the middle button
D. Set orientation="vertical" on LinearLayout, gravity="center_horizontal", and layout_gravity="end" on the middle button

Solution

  1. Step 1: Set vertical stacking

    orientation="vertical" stacks buttons top to bottom.
  2. Step 2: Center all buttons horizontally by default

    Set gravity="center_horizontal" on LinearLayout to center children horizontally.
  3. Step 3: Align middle button to right edge

    Override middle button's alignment with layout_gravity="end" to push it to the right.
  4. Final Answer:

    orientation="vertical", gravity="center_horizontal", layout_gravity="end" on middle button -> Option D
  5. Quick Check:

    Vertical stack + center default + override middle button end [OK]
Hint: Use layout_gravity on child to override parent gravity alignment [OK]
Common Mistakes:
  • Using horizontal orientation instead of vertical
  • Setting gravity="end" on parent causing all children right aligned
  • Not overriding middle button alignment
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard