Dölj det mjuka Android-tangentbordet programmerat på knappen Klicka och tryck på utanför

Java

Hantera Android-tangentbordet

Att arbeta med Android-applikationer kräver ofta användarinmatning via det virtuella tangentbordet. I scenarier där du har en EditText och en knapp i din layout, blir det viktigt att hantera tangentbordet effektivt. Närmare bestämt, efter att ha skrivit in text och klickat på knappen, kanske du vill dölja tangentbordet för att förbättra användarupplevelsen.

Den här artikeln kommer att ge ett enkelt och praktiskt exempel på hur man stänger det mjuka Android-tangentbordet programmatiskt när användaren interagerar med områden utanför tangentbordet. Genom att följa stegen som beskrivs kan du förbättra användbarheten och gränssnittet för din Android-applikation.

Kommando Beskrivning
getSystemService Hämtar en tjänst på systemnivå efter namn, till exempel InputMethodManager för hantering av inmatningsmetoder.
hideSoftInputFromWindow Begär att dölja det mjuka tangentbordsfönstret som för närvarande accepterar inmatning.
getWindowToken Returnerar fönstertoken som är kopplad till vyn, nödvändig för att dölja tangentbordet.
onTouchEvent Hanterar rörelsehändelser på pekskärmen, används här för att dölja tangentbordet vid beröring utanför.
findViewById Hittar och returnerar en vy med det angivna ID:t, som används för att referera till UI-element som EditText och Button.
setOnClickListener Ställer in en återuppringning som kommer att anropas när vyn klickas, används för att utlösa tangentbordsdöljning.

Förstå genomförandet

De tillhandahållna skripten visar hur man programmässigt döljer Android-tangentbordet när man interagerar med användargränssnittet, särskilt efter att ha skrivit in text i en och klicka på a . Java- och Kotlin-exemplen använder flera viktiga Android-komponenter och -metoder. Båda skripten börjar med att importera nödvändiga klasser som t.ex , Context, , och olika UI-komponenter. I den metod, används för att länka EditText och från layouten till koden. De metoden ställs sedan in på knappen för att utlösa funktion när du klickar.

I båda implementeringarna är funktion använder att hämta service. Metoden hideSoftInputFromWindow kallas då med av för att dölja det mjuka tangentbordet. Dessutom har metoden åsidosätts för att säkerställa att tangentbordet döljs när användaren trycker utanför inmatningsfältet. Detta tillvägagångssätt förbättrar användarupplevelsen genom att förhindra att tangentbordet blockerar sikten i onödan. Genom att använda dessa metoder och hantera beröringshändelserna på rätt sätt hanterar skripten det mjuka tangentbordets beteende i en Android-applikation.

Dölja Android-tangentbordet på knappen Klicka och tryck på utanför inmatningsfältet

Använder Java i Android-utveckling

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
 
public class MainActivity extends Activity {
    private EditText editText;
    private Button button;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        editText = findViewById(R.id.editText);
        button = findViewById(R.id.button);
 
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                hideKeyboard();
            }
        });
    }
 
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        hideKeyboard();
        return super.onTouchEvent(event);
    }
 
    private void hideKeyboard() {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
    }
}

Hantera avvisning av mjukt tangentbord i Android med Kotlin

Använder Kotlin för Android-apputveckling

import android.app.Activity
import android.content.Context
import android.os.Bundle
import android.view.MotionEvent
import android.view.View
import android.view.inputmethod.InputMethodManager
import android.widget.Button
import android.widget.EditText
 
class MainActivity : Activity() {
    private lateinit var editText: EditText
    private lateinit var button: Button
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
 
        editText = findViewById(R.id.editText)
        button = findViewById(R.id.button)
 
        button.setOnClickListener { hideKeyboard() }
    }
 
    override fun onTouchEvent(event: MotionEvent): Boolean {
        hideKeyboard()
        return super.onTouchEvent(event)
    }
 
    private fun hideKeyboard() {
        val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        imm.hideSoftInputFromWindow(editText.windowToken, 0)
    }
}

Utforska avancerade tekniker för tangentbordshantering

Utöver de grundläggande metoderna för att dölja Android-tangentbordet kan utvecklare implementera mer avancerade tekniker för att förbättra användarupplevelsen. En sådan metod innebär att använda på flera UI-komponenter för att upptäcka beröringshändelser och dölja tangentbordet därefter. Detta tillvägagångssätt säkerställer att tangentbordet döljs när användaren interagerar med någon del av skärmen utanför . Dessutom kan hantering av tangentbordets synlighet kombineras med fokuseringslogik, där fokus flyttas bort från till en annan komponent, vilket uppmanar tangentbordet att döljas automatiskt.

En annan teknik är att använda på . Den här lyssnaren kan upptäcka när tappar fokus och döljer sedan tangentbordet. Denna metod är särskilt användbar i formulär eller datainmatningsapplikationer där flera inmatningsfält är involverade. Dessutom, för en mer sömlös användarupplevelse, kan utvecklare anställa SoftKeyboardStateWatcher, en anpassad implementering som spårar tangentbordets synlighetsförändringar och svarar därefter. Genom att integrera sådana avancerade tekniker kan utvecklare skapa mer intuitiva och användarvänliga Android-applikationer.

  1. Hur kan jag upptäcka när tangentbordet visas eller döljs?
  2. Du kan använda en för att spåra tangentbordets synlighetsförändringar.
  3. Är det möjligt att dölja tangentbordet automatiskt när en användare rullar?
  4. Ja, du kan implementera en på rullningsvyn för att dölja tangentbordet under rullning.
  5. Kan jag programmatiskt visa tangentbordet när en är fokuserad?
  6. Ja, använd för att visa tangentbordet när får fokus.
  7. Hur döljer jag tangentbordet när användaren trycker på bakåtknappen?
  8. Åsidosätt metod och dölj tangentbordet med hjälp av .
  9. Kan jag anpassa tangentbordslayouten?
  10. Ja, Android tillåter anpassade tangentbordslayouter .
  11. Vad är det bästa sättet att dölja tangentbordet i ett fragment?
  12. Använda sig av för att få i ett fragment.
  13. Hur kan jag dölja tangentbordet när jag växlar mellan fragment?
  14. Implementera a med en lyssnare för att dölja tangentbordet under bytet.
  15. Är det möjligt att animera döljandet av tangentbordet?
  16. Ja, du kan animera vyn som innehåller för att skapa en mjuk döljande effekt.

Att effektivt hantera Android-tangentbordet är avgörande för att skapa intuitiva applikationer. Genom att använda getSystemService för att hämta InputMethodManager och hideSoftInputFromWindow för att dölja tangentbordet kan utvecklare styra när tangentbordet visas och försvinner. Genom att implementera pek- och klicklyssnare förfinas denna kontroll ytterligare, vilket säkerställer att tangentbordet döljs på lämpligt sätt när det interagerar med andra UI-element. Dessa tekniker förbättrar användarupplevelsen genom att förhindra att tangentbordet blockerar viktigt innehåll eller UI-element.