In questo articolo vedremo come poter eliminare il cursore e la selezione (Focus) dell'EditText una volta inserito testo o numeri.
Questo esempio prende come base il progetto presentato in questo articolo con l'aggiunta della funzione ClearFocus (annulla la selezione) e CursorVisible (visualizzazione o meno del cursore)
Cos'è il Focus e il Cursor?
Nell'immagine qui sotto, come si può vedere, la prima EditText è selezionata (Focus) e il cursore (Cursor) lampeggiante, mentre la seconda EditText non è selezionata e senza cursore. Quindi il Focus è quando attiviamo l'EditText per l'inserimento del testo, mentre il Cursor è il cursore che ci dice dove stiamo inserendo il testo.
Ora se scriviamo qualcosa nella prima EditText e clicchiamo sul pulsante, vedremo che oltre ad eseguire la funzione per cui è programmato, la EditText rimane selezionata (Focus) e il cursore (Cursor) lampeggiante. Per fare in modo che alla pressione del pulsante venga annullato il Focus e disattivato il Cursor nell'EditText bisogna seguire alcuni accorgimenti.
Nel file activity_main.xml occorre aggiungere una View con l'aggiunta degli attributi:
una View molto utile a questo scopo può essere ad esempio un divisorio (Divider)
Questa View, con gli attributi specificati sopra, fa si che quando andiamo a disattivare il Focus e il Cursor sulla EditText, la View divider si prende il Focus.
Se non specifichiamo questi attributi la disattivazione del Focus sulla EditText non avrà effetto.
N.B. Inserire questa View prima della EditText a cui si vuole cancellare il Focus.
Se nel layout si hanno più EditText basta inserire una sola View con gli attributi specificati sopra.
Nel file MainActivity.kt all'interno della funzione setOnClickListener del pulsante bisogna inserire queste righe di codice:
Se si desidera cancellare il Focus e il Cursor su tutti gli EditText aggiungere le righe di codice sopra riportate cambiando la variabile a cui sono associate le altre EditText.
Mentre per la seconda EditText non è stato inserito alcun codice ed il risultato è il seguente:
Ecco il file activity_main.xml
Ecco il file MainActivity.kt
Vedi introduzione a EditText
Vedi gestione della tastiera
Vedi recupero del testo inserito
Questo esempio prende come base il progetto presentato in questo articolo con l'aggiunta della funzione ClearFocus (annulla la selezione) e CursorVisible (visualizzazione o meno del cursore)
Cos'è il Focus e il Cursor?
Nell'immagine qui sotto, come si può vedere, la prima EditText è selezionata (Focus) e il cursore (Cursor) lampeggiante, mentre la seconda EditText non è selezionata e senza cursore. Quindi il Focus è quando attiviamo l'EditText per l'inserimento del testo, mentre il Cursor è il cursore che ci dice dove stiamo inserendo il testo.
Ora se scriviamo qualcosa nella prima EditText e clicchiamo sul pulsante, vedremo che oltre ad eseguire la funzione per cui è programmato, la EditText rimane selezionata (Focus) e il cursore (Cursor) lampeggiante. Per fare in modo che alla pressione del pulsante venga annullato il Focus e disattivato il Cursor nell'EditText bisogna seguire alcuni accorgimenti.
Nel file activity_main.xml occorre aggiungere una View con l'aggiunta degli attributi:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
android:focusable="true" | |
android:focusableInTouchMode="true" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<View | |
android:id="@+id/divider1" | |
android:layout_width="match_parent" | |
android:layout_height="1dp" | |
android:background="#00FFFFFF" | |
android:focusable="true" | |
android:focusableInTouchMode="true"/> |
Se non specifichiamo questi attributi la disattivazione del Focus sulla EditText non avrà effetto.
N.B. Inserire questa View prima della EditText a cui si vuole cancellare il Focus.
Se nel layout si hanno più EditText basta inserire una sola View con gli attributi specificati sopra.
Nel file MainActivity.kt all'interno della funzione setOnClickListener del pulsante bisogna inserire queste righe di codice:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//editTxt è il nome della variabile associata alla EditText a cui si vuole cancellare il Focus e il Cursor | |
editTxt!!.isCursorVisible = false //nasconde la visualizzazione del cursore | |
editTxt!!.clearFocus() //cancella il focus dalla EditText specificata | |
editTxt!!.isFocusableInTouchMode = true //riabilita il focus quando si clicca sulla EditText | |
editTxt!!.isFocusable = true //riabilita il focusa alla EditText | |
editTxt!!.isCursorVisible = true //riabilita il cursore alla EditText |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<LinearLayout | |
xmlns:android="http://schemas.android.com/apk/res/android" | |
xmlns:tools="http://schemas.android.com/tools" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
tools:context=".MainActivity" | |
android:orientation="vertical"> | |
<View | |
android:id="@+id/divider1" | |
android:layout_width="match_parent" | |
android:layout_height="1dp" | |
android:background="#00FFFFFF" | |
android:focusable="true" | |
android:focusableInTouchMode="true"/> | |
<EditText | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:inputType="text" | |
android:id="@+id/editText"/> | |
<EditText | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:inputType="text" | |
android:ems="10" | |
android:id="@+id/editText2"/> | |
<Button | |
android:text="Button" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:id="@+id/button"/> | |
<TextView | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:id="@+id/textView" | |
android:textSize="20sp" | |
android:textColor="#000000"/> | |
</LinearLayout> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.dm.tutorialtext7 | |
import android.content.Context | |
import android.support.v7.app.AppCompatActivity | |
import android.os.Bundle | |
import android.view.inputmethod.InputMethodManager | |
import android.widget.Button | |
import android.widget.EditText | |
import android.widget.TextView | |
class MainActivity : AppCompatActivity() { | |
var editTxt: EditText? = null | |
var txt: TextView? = null | |
var btn: Button? = null | |
override fun onCreate(savedInstanceState: Bundle?) { | |
super.onCreate(savedInstanceState) | |
setContentView(R.layout.activity_main) | |
editTxt = findViewById(R.id.editText) | |
txt = findViewById(R.id.textView) | |
btn = findViewById(R.id.button) | |
btn!!.setOnClickListener{ | |
//variabile temporanea per il recupero del testo inserito nella EditText | |
val message: String = editTxt!!.text.toString() | |
//inserimento del testo all'interno di una TextView | |
txt!!.text = message | |
editTxt!!.isCursorVisible = false //nasconde la visualizzazione del cursore | |
editTxt!!.clearFocus() //cancella il focus dalla EditText specificata | |
editTxt!!.isFocusableInTouchMode = true //riabilita il focus quando si clicca sulla EditText | |
editTxt!!.isFocusable = true //riabilita il focusa alla EditText | |
editTxt!!.isCursorVisible = true //riabilita il cursore alla EditText | |
//nasconde la tastiera | |
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager | |
imm.hideSoftInputFromWindow(txt!!.getWindowToken(), 0) | |
} | |
} | |
} |
Download Project | ![]() |
Download file APK | ![]() |
Vedi introduzione a EditText
Vedi gestione della tastiera
Vedi recupero del testo inserito
Commenti
Posta un commento