Qué es
JEditText es un Custom View de entrada de texto basado en XUI. El código real contiene soporte para B4J, B4A y B4i e incluye hint/título flotante, iconos, contraseña, indicador de fuerza, multiline, helper, contador, longitud máxima, campo obligatorio, read-only y estado de error.
La imagen superior es orientativa. No se usa para atribuir funciones que el código no tenga.
Eventos
Private Sub UserName_TextChanged(Old As String, New As String)
End Sub
Private Sub UserName_FocusChanged(HasFocus As Boolean)
End Sub
Private Sub UserName_EnterPressed
End Sub
Private Sub UserName_ClickedIcon(Open As Boolean)
End Sub
Designer Properties
Confirmadas en el código: ActiveColor, CornerRadius, IconBackgroundColor, BackgroundColor, TextColor, HintTextColor, IconDeleteColor, IconColor, HintText, TextSize, IconSize, BorderWidth, PaddingHorizontal, PaddingVertical, StaticMode, PasswordMode, PasswordStrength, UseIcon, UseDeleteIcon, mMultiline, HintAsTitle, RequiredField, RequiredFieldColor, HelperText, HelperTextColor, MaxLength, ShowCounter, InputType y ReadOnly.
InputType lista: Text|Number|Phone|Email|Decimal. MaxLength=0 significa sin límite.
Crear por código
Dim UserName As JEditText
UserName.Initialize(Me, "UserName")
UserName.AddToParent(Root, "username", "User name", _
20dip, 20dip, 320dip, 64dip, _
0xFF35B998, 0xFFF5F7FA, 0xFF12153D, _
14, False, True, 1, xui.Color_White)
Texto, hint y título flotante
UserName.Text = "Fernando"
UserName.HintText = "User name"
UserName.HintAsTitle = True
UserName.HintTextColor = 0xFF909090
Con HintAsTitle=False, el hint actúa como placeholder según la lógica del componente.
Campo obligatorio, helper y contador
UserName.RequiredField = True
UserName.RequiredFieldColor = 0xFFDD5F60
UserName.HelperText = "Enter your account name"
UserName.MaxLength = 30
UserName.ShowCounter = True
Si MaxLength > 0, el manejador de cambio recorta texto que exceda el máximo. El contador muestra longitud actual/máxima.
Error
If UserName.Text.Trim = "" Then
UserName.Error = "This field is required"
Else
UserName.clearError
End If
Error cambia borde/hint al ErrorColor y muestra el mensaje. clearError restaura el estado. También existen IsError y ErrorText de lectura.
Password
Password.PasswordMode = True
Password.PasswordStrength = True
Password.PasswordIconColor = 0xFF35B998
El modo contraseña crea un icono para alternar visibilidad. El indicador de fuerza usa tres segmentos y se actualiza al cambiar el texto.
Multiline
Notes.Multiline = True
En B4J el componente recrea internamente el editor al cambiar este modo, conserva el texto y reaplica formato.
ReadOnly
UserName.ReadOnly = True
Deshabilita la edición del control nativo.
InputType: precisión importante
Email.InputType = "Email"
El setter existe en todas las plataformas, pero la configuración específica del teclado para Number/Phone/Email/Decimal está dentro de #If B4A. En B4J no debe presentarse como validación ni como cambio de teclado.
Iconos y logo
APIs confirmadas: ShowIcon, IconColor, Icon(Font, Icons), Icon2(Font, Icons, IconColor), SetLogo(FileDir, FileName, Size), SetIconSize(Size), ShowDeleteIcon, DeleteIconColor.
Apariencia
Propiedades confirmadas: ActiveColor, IconPanelBackgroundColor, IconBackgroundColor, BackgroundColor, TextColor, TextSize, HintColor, HintTextColor, IconColor, CornerRadius, Font, BorderWidth, PaddingHorizontal, PaddingVertical, PasswordIconColor, DeleteIconColor, ColorIcon.
Métodos públicos
| Método | Uso |
|---|---|
| Initialize | Inicialización |
| DesignerCreateView | Ciclo del Custom View |
| AddToParent | Creación por código |
| Base_Resize | Reorganiza el control |
| Activate | Activa/desactiva visualmente |
| SetLogo | Logo desde archivo |
| SetIconSize | Tamaño de icono |
| visibleHintText | Visibilidad del hint |
| GetNativeTextField | Control nativo como Object |
| clearError | Limpia error |
| Wait | Espera expuesta |
| RefreshView | Refresca estado visual |
Límites confirmados
- No existe una propiedad pública
Success State; un aspecto verde es solo estilización. InputType="Email"no valida emails.- No existe una propiedad llamada
Placeholder; se obtiene conHintText+HintAsTitle=False. - Multiline sí es una capacidad real.
- ReadOnly deshabilita la edición nativa y su implementación varía por plataforma.