Bird
Raised Fist0
Android Kotlinmobile~20 mins

Arrangement and alignment in Android Kotlin - Mini App: Build & Ship

Choose your learning style10 modes available
Build: Alignment Demo Screen
This screen demonstrates how to arrange and align text and buttons using LinearLayout in Android Kotlin.
Target UI
-------------------------
|       Alignment Demo   |
|-----------------------|
|                       |
|  [Left Aligned Text]   |
|                       |
|       [Center Text]    |
|                       |
|  [Right Aligned Text]  |
|                       |
|  [Button 1] [Button 2] |
|                       |
-------------------------
Use a vertical LinearLayout as the main container.
Add three TextViews with text aligned left, center, and right respectively.
Add a horizontal LinearLayout at the bottom with two buttons side by side.
Buttons should be evenly spaced and aligned horizontally.
Use padding and margin to separate elements clearly.
Starter Code
Android Kotlin
package com.example.alignmentdemo

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

// TODO: Create activity_main.xml layout file with LinearLayouts and TextViews as described
Task 1
Task 2
Task 3
Task 4
Task 5
Solution
Android Kotlin
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="16dp">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Left Aligned Text"
        android:textSize="18sp"
        android:gravity="start"
        android:padding="8dp" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Center Text"
        android:textSize="18sp"
        android:gravity="center"
        android:padding="8dp" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Right Aligned Text"
        android:textSize="18sp"
        android:gravity="end"
        android:padding="8dp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="24dp"
        android:gravity="center"
        android:weightSum="2">

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Button 1"
            android:layout_marginEnd="8dp" />

        <Button
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Button 2"
            android:layout_marginStart="8dp" />

    </LinearLayout>

</LinearLayout>

We use a vertical LinearLayout as the main container with padding around all edges.

Three TextViews are added with android:gravity set to start, center, and end to align text left, center, and right respectively.

At the bottom, a horizontal LinearLayout contains two Buttons. We use layout_weight="1" and layout_width="0dp" on each button to make them share space evenly.

Margins separate the buttons horizontally, and padding separates text views vertically for clarity.

Final Result
Completed Screen
-------------------------
|       Alignment Demo   |
|-----------------------|
|                       |
|  Left Aligned Text     |
|                       |
|       Center Text      |
|                       |
|               Right Aligned Text |
|                       |
|  [Button 1]   [Button 2]          |
|                       |
-------------------------
Buttons respond visually when tapped.
Text alignment remains consistent on different screen sizes.
Stretch Goal
Add a toggle switch to change the vertical LinearLayout orientation between vertical and horizontal dynamically.
💡 Hint
Use a Switch widget and set an OnCheckedChangeListener in Kotlin to update the LinearLayout orientation property.

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