Android School Sign Up Page UI Design Using XML (Complete Step-by-Step Explanation)
Designing a user-friendly and visually attractive Sign Up screen is one of the most important steps in Android app development.
In school and education-based applications, the Sign Up page acts as the first point of interaction for parents, children, and teachers.
In this tutorial, we will build a modern School Sign Up Page UI using Android XML and explain every part of the layout in detail.
This guide is written in a real developer-friendly style, making it suitable for beginners as well as experienced Android developers.
Features of This School Sign Up UI
- Dark theme professional layout
- Role selection (Parent, Child, Teacher)
- Rounded EditText fields with icons
- Password and Confirm Password fields
- Gradient Sign Up button
- Scrollable UI for all screen sizes
- Reusable drawable XML resources
Why This UI Design Is Ideal for School Apps
School applications often serve multiple user roles such as parents, students, and teachers. This UI visually separates each role using colors and icons, making it easier for users to identify themselves.
The layout follows Material Design principles and ensures:
- Better usability
- Clear visual hierarchy
- Improved accessibility
- Consistent user experience
Layout Architecture Overview
ScrollView – Root Layout
The entire screen is wrapped inside a ScrollView. This is mandatory for Sign Up forms because the content can be long.
- Prevents UI cutoff on small screens
- Allows scrolling when keyboard opens
- Supports all screen sizes
The attribute android:fillViewport="true" ensures the layout expands properly on larger devices.
ConstraintLayout – Main Container
Inside the ScrollView, a ConstraintLayout is used as the primary container.
- Better performance compared to nested layouts
- Flexible UI positioning
- Recommended by Google
ConstraintLayout helps keep the layout clean, flat, and easy to maintain.
The sign-up screen uses a ScrollView as the root element to ensure all content remains accessible on smaller devices. Inside the ScrollView, a ConstraintLayout organizes all UI components with flexible positioning and proper spacing. This combination provides both scrollability and precise element placement, making the interface responsive across different screen sizes.
Screen Title – Sign Up
The main heading uses a large text size and white color to stand out against the dark background.
- Text Size: 34sp
- Color: White
- Centered alignment
This creates a strong first impression and clearly tells users what the screen is for.
Role Selection Section – WHO YOU ARE?
This section allows users to select their role before entering their details.
Available Roles
- Parent
- Child
- Teacher
Each role contains:
- Circular colored background
- Role-specific icon
- Role label text
Using different colors for each role improves visual clarity and user understanding.
Circular Background Drawables Explained
Instead of using PNG images, circular backgrounds are created using shape drawables.
Advantages of Shape Drawables
- Smaller APK size
- Easy color customization
- No image scaling issues
- Better performance
Three different colors are used:
- Yellow – Parent
- Orange – Child
- Blue – Teacher
User Input Fields
The Sign Up form collects the following user details:
- Username
- Email address
- Password
- Confirm Password
Each EditText field uses:
- Rounded border
- Start drawable icon
- White text for dark theme
- Clear hint text
Custom EditText Background Design
A reusable XML drawable is used for all input fields.
- Transparent background
- White stroke border
- 25dp rounded corners
This gives a modern look and maintains consistency across the app.
Password and Confirm Password Fields
Both password fields use the textPassword input type.
Why This Is Important
- Masks sensitive information
- Improves user trust
- Standard security practice
Gradient Sign Up Button
The Sign Up button uses a gradient background to make it visually appealing.
Button Design Highlights
- Orange gradient colors
- Rounded corners
- Clear call-to-action
Gradient buttons attract user attention and increase interaction rates.
Login Navigation Section
Below the Sign Up button, a login navigation text is provided for existing users.
- Improves user experience
- Allows quick navigation
- Standard Sign Up screen pattern
Best UI Practices Used
- Dark theme compatibility
- Proper spacing and margins
- Readable font sizes
- Icon + text combination
- Scrollable layout for safety
- Reusable XML resources
Ideal Use Cases
- School management apps
- Online education platforms
- Kids learning applications
- Parent–teacher communication apps
Enhancement Ideas
- Add role selection highlight effect
- Implement password strength indicator
- Use ViewBinding or DataBinding
- Integrate Firebase Authentication
- Convert UI to Jetpack Compose
Full Source Code
activity_signup.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/dark_blue"
android:fillViewport="true"
tools:context=".SignupActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">
<TextView
android:id="@+id/textViewSignUp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="Sign up"
android:textColor="@android:color/white"
android:textSize="34sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textViewWhoYouAre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="WHO YOU ARE?"
android:textColor="@android:color/white"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/textViewSignUp" />
<LinearLayout
android:id="@+id/linearLayoutRoles"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/textViewWhoYouAre">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/circle_yellow"
android:padding="10dp"
android:src="@drawable/ic_parents" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PARENT"
android:textColor="#FFC107" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/circle_orange"
android:padding="10dp"
android:src="@drawable/ic_child" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CHILD"
android:textColor="#FF5722" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/circle_blue"
android:padding="10dp"
android:src="@drawable/ic_teacher" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TEACHER"
android:textColor="#2196F3" />
</LinearLayout>
</LinearLayout>
<EditText
android:id="@+id/editTextUsername"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:background="@drawable/edit_text_background"
android:drawableStart="@drawable/ic_person"
android:drawablePadding="10dp"
android:hint="Username"
android:inputType="text"
android:padding="16dp"
android:textColor="@android:color/white"
android:textColorHint="@android:color/darker_gray"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/linearLayoutRoles" />
<EditText
android:id="@+id/editTextEmail"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/edit_text_background"
android:drawableStart="@drawable/ic_email"
android:drawablePadding="10dp"
android:hint="Email"
android:inputType="textEmailAddress"
android:padding="16dp"
android:textColor="@android:color/white"
android:textColorHint="@android:color/darker_gray"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/editTextUsername" />
<EditText
android:id="@+id/editTextPassword"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/edit_text_background"
android:drawableStart="@drawable/ic_lock"
android:drawablePadding="10dp"
android:hint="Password"
android:inputType="textPassword"
android:padding="16dp"
android:textColor="@android:color/white"
android:textColorHint="@android:color/darker_gray"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/editTextEmail" />
<EditText
android:id="@+id/editTextConfirmPassword"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/edit_text_background"
android:drawableStart="@drawable/ic_lock"
android:drawablePadding="10dp"
android:hint="Confirm Password"
android:inputType="textPassword"
android:padding="16dp"
android:textColor="@android:color/white"
android:textColorHint="@android:color/darker_gray"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/editTextPassword" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/buttonSignUp"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:background="@drawable/button_background"
android:text="SIGNUP"
android:textColor="@android:color/white"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/editTextConfirmPassword" />
<LinearLayout
android:id="@+id/loginTextContainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/buttonSignUp">
<TextView
android:id="@+id/textViewAlreadyHaveAccount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Already have an account. "
android:textColor="@android:color/white" />
<TextView
android:id="@+id/textViewLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Login here"
android:textColor="@color/login_orange" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
circle_yellow.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#FFC107" />
</shape>
circle_orange.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#FF5722" />
</shape>
circle_blue.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#2196F3" />
</shape>
button_background.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#FF9800"
android:endColor="#FF5722"
android:angle="0" />
<corners android:radius="25dp" />
</shape>
edit_text_background.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/transparent" />
<stroke
android:width="1dp"
android:color="@android:color/white" />
<corners android:radius="25dp" />
</shape>
Conclusion
This Android School Sign Up Page UI using XML is a complete, production-ready design. It follows modern UI principles and provides a strong foundation for building real-world education apps.
If you are learning Android UI design or building a school-based application, this layout will help you create a clean and professional onboarding experience.
