{"id":401,"date":"2023-09-09T18:34:54","date_gmt":"2023-09-09T18:34:54","guid":{"rendered":"https:\/\/javigomez.org\/?p=401"},"modified":"2025-09-29T20:33:56","modified_gmt":"2025-09-29T20:33:56","slug":"07-kotlin-palette-text-anadir-textos-a-android","status":"publish","type":"post","link":"https:\/\/javigomez.org\/index.php\/2023\/09\/09\/07-kotlin-palette-text-anadir-textos-a-android\/","title":{"rendered":"07. Kotlin &#8211; Palette Text. A\u00f1adir Textos a Android"},"content":{"rendered":"\n<p><strong>1. TextView<\/strong><\/p>\n\n\n\n<p>android:id: Define un identificador \u00fanico para el TextView. Se utiliza para referirse a \u00e9l en el c\u00f3digo de Kotlin.<\/p>\n\n\n\n<p>android:id: Define un identificador \u00fanico para el TextView. Se utiliza para referirse a \u00e9l en el c\u00f3digo de Kotlin.<\/p>\n\n\n\n<p><strong>android<\/strong>:<strong>text<\/strong>: Establece el texto que se mostrar\u00e1 en el TextView.<\/p>\n\n\n\n<p><strong>android<\/strong>:<strong>textSize<\/strong>: Define el tama\u00f1o del texto en unidades de p\u00edxeles (sp para escala independiente de p\u00edxeles).<\/p>\n\n\n\n<p><strong>android<\/strong>:<strong>textColor<\/strong>: Establece el color del texto, puedes especificar un color utilizando un valor hexadecimal (#RRGGBB) o utilizando referencias a colores definidos en el archivo colors.xml.<\/p>\n\n\n\n<p><strong>android<\/strong>:<strong>gravity<\/strong>: Define la alineaci\u00f3n del texto dentro del TextView. Puedes utilizar valores como center, start, end o combinaciones de ellos, como center_vertical|end.<\/p>\n\n\n\n<p><strong>android<\/strong>:<strong>padding<\/strong>: Establece el espacio de relleno (padding) alrededor del texto dentro del TextView. Puedes especificar valores para los cuatro lados (left, top, right, bottom) en unidades de p\u00edxeles o en unidades proporcionales (dp o sp).<\/p>\n\n\n\n<p><strong>android<\/strong>:<strong>background<\/strong>: Define el fondo del TextView. Puedes especificar un color utilizando un valor hexadecimal o utilizar una imagen o un recurso de drawable.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?>\n&lt;LinearLayout\n    xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"wrap_content\"\n    android:orientation=\"vertical\">\n\n    &lt;!-- Elementos secundarios -->\n\n    &lt;TextView\n        android:layout_width=\"match_parent\"\n        android:layout_height=\"wrap_content\"\n        android:text=\"Hola Javi\"\n        android:textSize=\"55sp\"\n        \/>\n\n&lt;\/LinearLayout>\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Kotlin U07 01 TextView XML\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/bMqsycEaFmw?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><strong>2. TextView desde c\u00f3digo<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;TextView\n    android:id=\"@+id\/tvEjemplo\"\n    android:layout_width=\"wrap_content\"\n    android:layout_height=\"wrap_content\"\n    android:text=\"Hello World!\" \/>\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>class MainActivity : AppCompatActivity() {\n    @RequiresApi(Build.VERSION_CODES.O)\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        setContentView(R.layout.activity_main)\n<strong>\/*\n        var tvEjemplo= findViewById&lt;TextView>(R.id.tvEjemplo)\n\n        var tvEjemplo: TextView = findViewById(R.id.tvEjemplo)*\/<\/strong>\n\n        var tvEjemplo= findViewById&lt;TextView>(R.id.tvEjemplo)\n        tvEjemplo.text=\"Cambiado desde c\u00f3digo\u201c\n\n        tvEjemplo.setTextColor(Color.RED)\n        tvEjemplo.setTextColor(getColor(R.color.verdecito))\n\n\n        tvEjemplo.setTypeface(Typeface.MONOSPACE, Typeface.BOLD)\n        \/\/ Cargar la fuente personalizada desde el directorio 'res\/font'\n        val typeface = resources.getFont(R.font.pacifico)\n        \/\/ Asignar la fuente personalizada al TextView\n        tvEjemplo.typeface = typeface\n    }\n}\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Kotlin U07 02 TextView KT\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/b0RnAF9G9Ic?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><strong>Eventos<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class Inicio : AppCompatActivity() {\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        setContentView(R.layout.activity_inicio)\n\n        val tvSaludo = findViewById&lt;TextView>(R.id.tvSaludo)\n        tvSaludo.text=\"Otro texto\"\n        tvSaludo.textSize=15f\n        tvSaludo.setTextColor(getColor(R.color.verdecito))\n\n        tvSaludo.typeface=resources.getFont(R.font.handlee)\n\n\n        tvSaludo.setOnClickListener{\n            Toast.makeText(this,\"Pulsado\",Toast.LENGTH_SHORT).show()\n            tvSaludo.setTextColor(Color.RED)\n            Log.i(\"JJJ\",\"PULSADO\")\n            val snack=Snackbar.make(findViewById(R.id.a_Inicio),\"Mensaje de otra forma\",Snackbar.LENGTH_LONG)\n            snack.show()\n        }\n\n    }\n}<\/code><\/pre>\n\n\n\n<p><strong>3. EditText desde XML<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;EditText\n android:id=\"@+id\/editTextTextPersonName\"\n        android:ems=\"10\"\n        android:inputType=\"textPersonName|textAutoCorrect\"\n        android:text=\"\"\n        android:textColor=\"@color\/green\"\n        android:hint=\"Nombre\"\n        android:gravity=\"center\"\n        android:digits=\"01234567890 \"\n        android:textColorHint=\"@color\/gold\"\n\/>\n<\/code><\/pre>\n\n\n\n<p><strong>android:id<\/strong>=&#8221;@+id\/editTextTextPersonName&#8221;: Establece el identificador \u00fanico del EditText. Se utiliza para hacer referencia a \u00e9l desde el c\u00f3digo de Kotlin.<\/p>\n\n\n\n<p><strong>android:ems<\/strong>=&#8221;10&#8243;: Establece el ancho del EditText en &#8220;ems&#8221; (unidades de medida de la longitud de los caracteres &#8220;M&#8221;). En este caso, el ancho se establece en 10 &#8220;ems&#8221;.<\/p>\n\n\n\n<p><strong>android:inputType<\/strong>=&#8221;textPersonName|textAutoCorrect&#8221;: Define el tipo de entrada de texto para el EditText. En este caso, se ha especificado que es un campo de entrada de nombre de persona y se habilita la correcci\u00f3n autom\u00e1tica.<\/p>\n\n\n\n<p><strong>android:text<\/strong>=&#8221;&#8221;: Establece el texto inicial del EditText. En este caso, el texto se establece como una cadena vac\u00eda.<\/p>\n\n\n\n<p><strong>android:textColor<\/strong>=&#8221;@color\/green&#8221;: Define el color del texto dentro del EditText. Aqu\u00ed se ha utilizado el color &#8220;green&#8221; definido en el archivo colors.xml en el directorio res\/values.<\/p>\n\n\n\n<p><strong>android:hint<\/strong>=&#8221;Nombre&#8221;: Establece un texto de sugerencia o indicaci\u00f3n (hint) que se muestra cuando el EditText est\u00e1 vac\u00edo. En este caso, el texto de sugerencia es &#8220;Nombre&#8221;.<\/p>\n\n\n\n<p><strong>android:gravity<\/strong>=&#8221;center&#8221;: Define la alineaci\u00f3n del texto dentro del EditText. En este caso, el texto se alinea al centro del EditText.<\/p>\n\n\n\n<p><strong>android:digits<\/strong>=&#8221;01234567890 &#8220;: Especifica los caracteres permitidos para la entrada de texto. En este caso, solo se permiten d\u00edgitos del 0 al 9 y el espacio en blanco.<\/p>\n\n\n\n<p><strong>android:textColorHint<\/strong>=&#8221;@color\/gold&#8221;: Define el color del texto de sugerencia (hint) dentro del EditText. Aqu\u00ed se ha utilizado el color &#8220;gold&#8221; definido en el archivo colors.xml.<\/p>\n\n\n\n<p>Tipos de EditText<\/p>\n\n\n\n<p><strong>Text<\/strong>: Es el tipo de EditText predeterminado que permite al usuario ingresar texto libremente. No se aplican restricciones espec\u00edficas a este tipo de entrada.<\/p>\n\n\n\n<p><strong>TextPersonName<\/strong>: Este tipo de EditText est\u00e1 dise\u00f1ado para ingresar nombres de personas. Puede ayudar con la correcci\u00f3n autom\u00e1tica y la capitalizaci\u00f3n adecuada para nombres personales.<\/p>\n\n\n\n<p><strong>TextPassword<\/strong>: Este tipo de EditText se utiliza para ingresar contrase\u00f1as. Los caracteres ingresados se ocultan y se muestran como puntos o asteriscos para proteger la informaci\u00f3n confidencial.<\/p>\n\n\n\n<p><strong>NumberPassword<\/strong>: Similar al tipo TextPassword, este tipo de EditText se utiliza para ingresar contrase\u00f1as, pero se espera que contengan solo n\u00fameros.<\/p>\n\n\n\n<p><strong>TextEmailAddress<\/strong>: Este tipo de EditText est\u00e1 dise\u00f1ado para ingresar direcciones de correo electr\u00f3nico. Puede ayudar a habilitar la correcci\u00f3n autom\u00e1tica espec\u00edfica para direcciones de correo electr\u00f3nico y mostrar un teclado adecuado para la entrada de correo electr\u00f3nico.<\/p>\n\n\n\n<p><strong>Phone<\/strong>: Este tipo de EditText est\u00e1 dise\u00f1ado para ingresar n\u00fameros de tel\u00e9fono. Puede mostrar un teclado num\u00e9rico y habilitar ciertas caracter\u00edsticas espec\u00edficas de los n\u00fameros de tel\u00e9fono, como el formato autom\u00e1tico.<\/p>\n\n\n\n<p><strong>TextPostalAddress<\/strong>: Este tipo de EditText est\u00e1 dise\u00f1ado para ingresar direcciones postales. Puede ayudar con la correcci\u00f3n autom\u00e1tica y la capitalizaci\u00f3n adecuada para direcciones postales.<\/p>\n\n\n\n<p><strong>TextMultiline<\/strong>: Este tipo de EditText permite al usuario ingresar m\u00faltiples l\u00edneas de texto. Es \u00fatil para ingresar texto extenso o notas largas. Se puede ajustar autom\u00e1ticamente la altura del EditText para mostrar todo el contenido.<\/p>\n\n\n\n<p><strong>Time<\/strong>: Este tipo de EditText se utiliza para ingresar tiempos. Puede mostrar un reloj o un selector de tiempo para facilitar la entrada y garantizar la precisi\u00f3n en el formato de tiempo.<\/p>\n\n\n\n<p><strong>Date<\/strong>: Este tipo de EditText est\u00e1 dise\u00f1ado para ingresar fechas. Puede mostrar un calendario o un selector de fecha para facilitar la entrada y garantizar la precisi\u00f3n en el formato de fecha.<\/p>\n\n\n\n<p><strong>Number<\/strong>: Este tipo de EditText permite al usuario ingresar solo n\u00fameros. Puede mostrar un teclado num\u00e9rico y validar autom\u00e1ticamente que solo se ingresen d\u00edgitos.<\/p>\n\n\n\n<p><strong>NumberSigned<\/strong>: Similar al tipo Number, este tipo de EditText permite al usuario ingresar n\u00fameros, incluidos valores negativos.<\/p>\n\n\n\n<p><strong>NumberDecimal<\/strong>: Este tipo de EditText se utiliza para ingresar n\u00fameros decimales. Permite al usuario ingresar valores decimales, incluyendo n\u00fameros enteros y fracciones.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/javigomez.org\/wp-content\/uploads\/2023\/09\/image-42-1-19-1-1.png\" alt=\"\" class=\"wp-image-402\" style=\"width:637px;height:793px\" width=\"637\" height=\"793\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/javigomez.org\/wp-content\/uploads\/2023\/09\/image-42-2-10-1-1.png\" alt=\"\" class=\"wp-image-403\" style=\"width:636px;height:831px\" width=\"636\" height=\"831\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Kotlin U07 03 EditText XML KT\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/l_xVNMdRtQw?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><strong>4. EditText &#8211; Crear un fondo para un campo de entrada de texto<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/javigomez.org\/wp-content\/uploads\/2023\/09\/image-42-2-11-1-1.png\" alt=\"\" class=\"wp-image-404\"\/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?>\n&lt;selector xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\">\n\n    &lt;item android:state_enabled=\"true\" android:state_focused=\"true\">\n        &lt;shape android:shape =\"rectangle\">\n            &lt;solid android:color = \"@android:color\/white\" \/>\n            &lt;corners android:radius = \"10dp\"\/>\n            &lt;stroke android:color=\"@color\/teal_700\" android:width=\"2dp\"\/>\n        &lt;\/shape>\n    &lt;\/item>\n    &lt;item android:state_enabled=\"true\">\n        &lt;shape android:shape =\"rectangle\">\n            &lt;solid android:color = \"@android:color\/white\" \/>\n            &lt;corners android:radius = \"10dp\"\/>\n            &lt;stroke android:color=\"@color\/teal_200\" android:width=\"1dp\"\/>\n        &lt;\/shape>\n    &lt;\/item>\n\n\n&lt;\/selector>\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;EditText\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:id=\"@+id\/editTextTextPersonName\"\n        android:ems=\"10\"\n        android:inputType=\"textPersonName|textAutoCorrect\"\n        android:text=\"\"\n        android:textColor=\"@color\/green\"\n        android:hint=\"Nombre\"\n        android:gravity=\"center\"\n        android:digits=\"01234567890 \"\n        android:background=\"@drawable\/style_etbg\"\n        android:textColorHint=\"@color\/gold\"\n        tools:layout_editor_absoluteX=\"106dp\"\n        tools:layout_editor_absoluteY=\"251dp\" \/>\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/javigomez.org\/wp-content\/uploads\/2023\/09\/image-42-2-12-1-1.png\" alt=\"\" class=\"wp-image-405\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Kotlin U07 04 EditText Background\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/ZoqvVGuL_2w?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>5. EditText: crear un icono para la caja de texto<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/javigomez.org\/wp-content\/uploads\/2023\/09\/image-42-2-13-1-1.png\" alt=\"\" class=\"wp-image-406\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/javigomez.org\/wp-content\/uploads\/2023\/09\/image-42-2-14-1-1.png\" alt=\"\" class=\"wp-image-407\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/javigomez.org\/wp-content\/uploads\/2023\/09\/image-42-2-15-1-1.png\" alt=\"\" class=\"wp-image-408\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/javigomez.org\/wp-content\/uploads\/2023\/09\/image-42-2-16-1-1.png\" alt=\"\" class=\"wp-image-409\" style=\"width:616px;height:474px\" width=\"616\" height=\"474\"\/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>android:drawableStart=\"@drawable\/ic_email\"\n android:drawablePadding=\"10dp\"\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Kotlin U07 05 EditText Icono\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/uSZ18x193lg?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code> android:id=\"@+id\/editTextTextPersonName\"\n        android:ems=\"10\"\n        android:inputType=\"textPersonName|textAutoCorrect\"\n        android:text=\"\"\n\n        android:drawableStart=\"@drawable\/ic_email\"\n        android:drawablePadding=\"10dp\"\n\n        android:paddingStart=\"10dp\"\n        android:paddingTop=\"10dp\"\n        android:paddingBottom=\"10dp\"\n\n        android:textColor=\"@color\/green\"\n        android:hint=\"Nombre\"\n        android:gravity=\"center\"\n        android:digits=\"01234567890 \"\n        android:background=\"@drawable\/style_etbg\"\n        android:textColorHint=\"@color\/gold\u201c\n        android:textColorHighlight=\"@color\/orange\"\n<\/code><\/pre>\n\n\n\n<p><strong>android:drawableStart<\/strong>=&#8221;@drawable\/ic_email&#8221;: Establece un drawable (imagen) a la izquierda del texto del EditText. En este caso, se ha utilizado el drawable &#8220;ic_email&#8221; definido en el directorio &#8220;drawable&#8221;. Esta propiedad es \u00fatil para mostrar iconos o im\u00e1genes relacionadas con el campo de entrada.<\/p>\n\n\n\n<p><strong>android:drawablePadding<\/strong>=&#8221;10dp&#8221;: Establece el espaciado entre el drawable y el texto en el EditText. En este caso, se ha especificado un espaciado de 10dp.<\/p>\n\n\n\n<p><strong>android:paddingStart<\/strong>=&#8221;10dp&#8221;, android:paddingTop=&#8221;10dp&#8221;, android:paddingBottom=&#8221;10dp&#8221;: Estas propiedades establecen el relleno (padding) en el inicio, la parte superior y la parte inferior del EditText, respectivamente. Se utiliza para agregar espacio entre el borde del EditText y el contenido dentro de \u00e9l. En este caso, se ha establecido un relleno de 10dp en cada una de las direcciones mencionadas.<\/p>\n\n\n\n<p><strong>android:background<\/strong>=&#8221;@drawable\/style_etbg&#8221;: Establece un fondo personalizado para el EditText. En este caso, se ha utilizado un drawable llamado &#8220;style_etbg&#8221; definido en el directorio &#8220;drawable&#8221;. Puedes utilizar un drawable personalizado o un color para establecer el fondo del EditText.<\/p>\n\n\n\n<p><strong>android:textColorHighlight<\/strong>=&#8221;@color\/orange\u201c: Color del texto seleccionado<\/p>\n\n\n\n<p><strong>6. EditText desde c\u00f3digo &#8211; Mostrar un error<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var etEjemplo=findViewById&lt;EditText>(R.id.etEjemplo)\n\n        etEjemplo.addTextChangedListener {\n            if (etEjemplo.text.length==0) etEjemplo.setError(\"Campo vacio\")\n        }\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/javigomez.org\/wp-content\/uploads\/2023\/09\/image-42-2-17-1-1.png\" alt=\"\" class=\"wp-image-410\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Kotlin U07 06 EditText Error\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/O8YlKct7bBQ?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><strong>7. AutoCompleteTextView<\/strong><\/p>\n\n\n\n<p>Desde un ArrayString definido en recursos<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  &lt;AutoCompleteTextView\n        android:layout_width=\"300dp\"\n        android:layout_height=\"wrap_content\"\n        android:id=\"@+id\/autoCompleteTextView\"\n        \/>\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/javigomez.org\/wp-content\/uploads\/2023\/09\/image-28-1024x396.png\" alt=\"\" class=\"wp-image-411\"\/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>var autoCompleteTextView=findViewById&lt;AutoCompleteTextView>(R.id.autoCompleteTextView)\n        var countries: Array&lt;String> = resources.getStringArray(R.array.countries_array)\n\n        var adapter: ArrayAdapter&lt;String> = ArrayAdapter&lt;String> (this,\n            android.R.layout.simple_dropdown_item_1line,countries)\n\n        autoCompleteTextView.setAdapter(adapter)\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/javigomez.org\/wp-content\/uploads\/2023\/09\/image-42-2-19-1-1.png\" alt=\"\" class=\"wp-image-412\"\/><\/figure>\n\n\n\n<p>Los datos est\u00e1n en un listOf<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>val suggestions = listOf(\"Manzana\", \"Banana\", \"Naranja\", \"Pera\", \"Pi\u00f1a\")\nval autoCompleteTextView = findViewById&lt;AutoCompleteTextView>(R.id.autoCompleteTextView)\nval adapter = ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, suggestions)\nautoCompleteTextView.setAdapter(adapter)\n\nautoCompleteTextView.threshold = 1 \/\/ Mostrar sugerencias despu\u00e9s de ingresar un solo car\u00e1cter\n\nautoCompleteTextView.setOnItemClickListener { parent, view, position, id ->\n    val selectedSuggestion = suggestions&#91;position]\n    \/\/ Realizar acciones con la sugerencia seleccionada\n}\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Kotlin U07 07 AutoCompleteTextView\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/6AT2M9jTt8E?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p><strong>8. MultiAutoCompleteTextView<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;LinearLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\n    xmlns:app=\"http:\/\/schemas.android.com\/apk\/res-auto\"\n    xmlns:tools=\"http:\/\/schemas.android.com\/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    android:orientation=\"vertical\"\n    tools:context=\".MainActivity\">\n\n    &lt;MultiAutoCompleteTextView\n        android:id=\"@+id\/multiAutoCompleteTextView\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:hint=\"MultiAutoCompleteTextView\" \/>\n\n&lt;\/LinearLayout>\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>var multiAutoCompleteTextView=findViewById&lt;MultiAutoCompleteTextView>(R.id.multiAutoCompleteTextView)\n        var countries: Array&lt;String> = resources.getStringArray(R.array.countries_array)\n\n        var adapter: ArrayAdapter&lt;String> = ArrayAdapter&lt;String> (this,\n            android.R.layout.simple_dropdown_item_1line,countries)\n\n        multiAutoCompleteTextView.setAdapter(adapter)\n        multiAutoCompleteTextView.setTokenizer(MultiAutoCompleteTextView.CommaTokenizer())<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/javigomez.org\/wp-content\/uploads\/2023\/09\/image-42-3-10-1-1.png\" alt=\"\" class=\"wp-image-413\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Kotlin U07 08 MultiAutoCompleteTextView\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/LfT7Ays2dlM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>MultiAutoCompleteTextView es una subclase de EditText en Android que proporciona una funcionalidad de autocompletado similar a AutoCompleteTextView, pero con la capacidad adicional de seleccionar m\u00faltiples sugerencias y separarlas autom\u00e1ticamente con un car\u00e1cter delimitador.<\/p>\n\n\n\n<p>Aqu\u00ed tienes un ejemplo b\u00e1sico de c\u00f3mo utilizar MultiAutoCompleteTextView:<\/p>\n\n\n\n<p>Define una lista de sugerencias:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>val suggestions = listOf(\"Manzana\", \"Banana\", \"Naranja\", \"Pera\", \"Pi\u00f1a\")<\/code><\/pre>\n\n\n\n<p>Configura el adaptador y el separador para el MultiAutoCompleteTextView:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>val multiAutoCompleteTextView = findViewById&lt;MultiAutoCompleteTextView>(R.id.multiAutoCompleteTextView)\nval adapter = ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, suggestions)\n\nmultiAutoCompleteTextView.setAdapter(adapter)\n\nmultiAutoCompleteTextView.setTokenizer(MultiAutoCompleteTextView.CommaTokenizer()) \/\/ Utilizar coma como separador<\/code><\/pre>\n\n\n\n<p>Personaliza el comportamiento del MultiAutoCompleteTextView seg\u00fan tus necesidades, como el evento de selecci\u00f3n de sugerencias:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>multiAutoCompleteTextView.setOnItemClickListener { parent, view, position, id ->\nval selectedSuggestion = suggestions&#91;position]\n\u00a0\u00a0\u00a0 \/\/ Realizar acciones con la sugerencia seleccionada\n}<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Kotlin U07 08 MultiAutoCompleteTextView\" width=\"1200\" height=\"675\" src=\"https:\/\/www.youtube.com\/embed\/LfT7Ays2dlM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>1. TextView android:id: Define un identificador \u00fanico para el TextView. Se utiliza para referirse a \u00e9l en el c\u00f3digo de Kotlin. android:id: Define un identificador &hellip; <\/p>\n","protected":false},"author":1,"featured_media":347,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[49,124,212,239,328],"class_list":["post-401","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-kotlin","tag-autocompletetextview","tag-edittext","tag-kotlin","tag-multiautocompletetextview","tag-textview"],"_links":{"self":[{"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/posts\/401","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/comments?post=401"}],"version-history":[{"count":1,"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/posts\/401\/revisions"}],"predecessor-version":[{"id":935,"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/posts\/401\/revisions\/935"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/media\/347"}],"wp:attachment":[{"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/media?parent=401"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/categories?post=401"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/javigomez.org\/index.php\/wp-json\/wp\/v2\/tags?post=401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}