TextField
On this page, we focus on one of the components of Spheroid UI Engine, a TextField. You can find a quickstart with all source code you need to try the examples here.
Text fields are commonly integrated into forms (see more about Form). Though, of course, they can be used separately. In this case you can write a complex validation logic that a form does not allow you to implement.
Below, you will find the examples of using TextField class. The images corresponding to each example illustrate how the text will look on the mobile device.
Default settings
This is how a text field will look without changing any default settings:
TextField()
Visibility
A text field is visible by default. However, there are
cases when you need to turn the visibility on and off. You do this by setting the isVisible
property value true
or false
.
Width and height
TextField(width = 200dp, height = 60dp)
Value
Sometimes, you may want to improve user experience by showing the user pre-entered
text in text fields, so the user doesn’t have to type it in himself.
To do this, use the value
property:
TextField(width = 200dp, value = "TextField")
Background color
If you need to change the background color of a text field,
use the backgroundColor
property:
TextField(width = 200dp, value = "TextField", backgroundColor = Color(rgb = 0xFFFF00))
Border width
By default, a text field has a border. You can customize its width with the
borderWidth
property:
TextField(width = 200dp, value = "TextField", borderWidth = 3dp)
You can remove the border altogether by setting borderWidth = 0
.
Border color
Set the borderColor
property value to highlight the border:
TextField(width = 200dp, value = "TextField", borderColor = Color(rgb = 0xFF0000))
Corner radius
If you need to make the border rounded, use the cornerRadius
property:
TextField(width = 200dp, value = "TextField", cornerRadius = 22dp)
Placeholder
If you want to place a short hint to the expected value of the text field,
use the placeholder
property:
TextField(width = 200dp, placeholder = "Placeholder")
Placeholder color
You can control the placeholder color using the placeholderColor
property:
TextField(width = 200dp, placeholder = "Placeholder", placeholderColor = Color(rgba = 0xFF000066))
Text size
Use the textSize
property to customize the text value size:
TextField(width = 200dp, value = "TextField", textSize = 24dp)
Text color
If you need to change the text value color, set the textColor
property value using a
Color class instance:
TextField(width = 200dp, value = "TextField", textColor = Color(rgb = 0x34C759))
Tint color
You can set the cursor and text selection color using the tintColor
property:
TextField(width = 200dp, value = "TextField", tintColor = Color(rgb = 0xFF00FF))
Font weight
By default, the text value font has normal weight.
To make it bold, set the fondWeight
property:
TextField(width = 200dp, value = "TextField", fontWeight = "bold")
Padding
Using the padding
property, you can control the distance
between the border’s left side and the text:
TextField(width = 200dp, value = "TextField", padding = 2dp)
Email and password fields
Set the isEmail
property value to true for the field where the user types in his email.
Depending on the mobile device operational system, this will result in showing the user
a special keyboard layout for typing his email in. Commonly, the keyboard will have a “@”
symbol, and the first letter will be lowercase automatically.
TextField(width = 200dp, value = "mail@example.com", isEmail = true)
The isSecure
property is typically used when creating a field where a user enters
the password:
TextField(width = 200dp, value = "TextField", isSecure = true)
onFocusChange
event handler
With the onFocusChange
event handler, you have the means to execute a script
when the focus on the text field changes. This can be useful for design purposes
as well as for reacting to user behaviour and more.
In an example, we just want to print a log message when the focus changes:
TextField(width = 200dp, value = "TextField").onFocusChange { isOnFocus ->
println("TextField is on focus: " + isOnFocus)
}
Focus is on the text field:
Focus has been moved away from the text field:
Horizontal and vertical alignment
Sometimes, you need to change the relative position of a text field to the external container. You have a set of properties to do this. Note that by default the container is transparent, so we have used a Color class instance in the examples.
The horizontalAlign
property sets the horizontal alignment of the text field
to left, right or center:
Container(backgroundColor = Color(rgb = 0xEEEEEE)) {
TextField(width = 200dp, value = "TextField", horizontalAlign = "center")
}
The left
and right
properties allow you to place the text field
at an exact distance from the left or the right border of the external container:
Container(backgroundColor = Color(rgb = 0xEEEEEE)) {
TextField(width = 200dp, value = "TextField", left = 12dp)
}
The verticalAlign
property sets the vertical alignment of the text field
to top, bottom or center:
Container(backgroundColor = Color(rgb = 0xEEEEEE), height = 90dp) {
TextField(width = 200dp, value = "TextField", verticalAlign = "center")
}
Using the top
and bottom
properties, you can customize
the distance between the text field and the top or the bottom border of the external container:
Container(backgroundColor = Color(rgb = 0xEEEEEE), height = 90dp) {
TextField(width = 200dp, value = "TextField", bottom = 8dp)
}