Gids voor het programmatisch verbergen van Android Soft Keyboard

Java, Kotlin

Inleiding tot het verbergen van het Android-toetsenbord

Bij het ontwikkelen van Android-applicaties zijn er momenten waarop u het zachte toetsenbord programmatisch moet verbergen. Dit is vooral handig als u een EditText en een knop in uw lay-out heeft en wilt dat het toetsenbord verdwijnt nadat u op de knop hebt geklikt.

In deze handleiding verkennen we eenvoudige en effectieve manieren om deze functionaliteit te bereiken. Door de gegeven stappen te volgen, kunt u de gebruikerservaring van uw app verbeteren door de zichtbaarheid van het toetsenbord efficiënt te beheren.

Commando Beschrijving
getSystemService Haalt een service op systeemniveau op naam op; hier wordt het gebruikt om de InputMethodManager te verkrijgen voor het beheer van het toetsenbord.
hideSoftInputFromWindow Verbergt het zachte toetsenbord voor het venster en neemt een token en vlaggen als parameters.
getCurrentFocus Retourneert de huidige gerichte weergave in de activiteit, die wordt gebruikt om te bepalen waar het toetsenbord zich moet verbergen.
onClickListener Stelt een callback in die wordt geactiveerd wanneer op een weergave (bijvoorbeeld een knop) wordt geklikt.
dispatchTouchEvent Onderschept bewegingsgebeurtenissen op het aanraakscherm voordat ze naar het venster worden verzonden, handig voor aangepaste aanraakafhandeling.
windowToken Retourneert een token dat op unieke wijze het venster identificeert dat aan de weergave is gekoppeld, vereist voor het verbergen van het toetsenbord.

Begrijpen hoe u het Android-toetsenbord kunt verbergen

In het Java-voorbeeld importeert het script eerst de benodigde klassen, zoals , , En . De onCreate methode stelt de lay-out in en initialiseert de En . Wanneer op de knop wordt geklikt, wordt de methode wordt genoemd. Deze methode haalt de huidige gefocuste weergave op met behulp van getCurrentFocus, en als een weergave gefocust is, wordt deze gebruikt om het zachte toetsenbord te verbergen door te bellen . Hierdoor wordt het toetsenbord effectief gesloten wanneer op de knop wordt geklikt.

In het Kotlin-voorbeeld wordt vergelijkbare functionaliteit bereikt. Het script overschrijft de methode om de inhoudsweergave in te stellen en de En . De knopkliklistener roept de hideKeyboard methode. Bovendien is de De methode wordt overschreven om het toetsenbord te verbergen wanneer u de buitenkant aanraakt. Deze methode controleert of een weergave scherp is en verbergt het toetsenbord . Deze scripts verbeteren de gebruikerservaring door de zichtbaarheid van het zachte toetsenbord efficiënt te beheren.

Het Android Soft Keyboard programmatisch sluiten

Java voor Android-ontwikkeling

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

Verberg het toetsenbord bij aanraking buiten

Kotlin voor Android-ontwikkeling

import android.app.Activity
import android.os.Bundle
import android.view.MotionEvent
import android.view.View
import android.view.inputmethod.InputMethodManager
import android.widget.EditText
import android.widget.Button
class MainActivity : Activity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val editText = findViewById<EditText>(R.id.editText)
        val button = findViewById<Button>(R.id.button)
        button.setOnClickListener { hideKeyboard() }
    }
    private fun hideKeyboard() {
        val view = this.currentFocus
        view?.let { v ->
            val imm = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
            imm.hideSoftInputFromWindow(v.windowToken, 0)
        }
    }
    override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
        if (currentFocus != null) {
            val imm = getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
            imm.hideSoftInputFromWindow(currentFocus!!.windowToken, 0)
        }
        return super.dispatchTouchEvent(ev)
    }
}

Geavanceerde technieken voor het beheren van het Android-toetsenbord

Een ander belangrijk aspect van het beheer van het Android-zachte toetsenbord is het omgaan met de zichtbaarheid ervan als reactie op verschillende gebruikersinteracties en configuraties. U wilt bijvoorbeeld dat het toetsenbord automatisch verschijnt wanneer een krijgt focus of zorgt ervoor dat het verborgen blijft tijdens het navigeren tussen verschillende UI-componenten. Dit kan worden bereikt met behulp van de samen met lifecycle-callbacks zoals En onPause.

Bovendien kunt u het toetsenbordgedrag regelen door de attribuut in het manifestbestand van uw activiteit. Met dit attribuut kunt u opgeven of het toetsenbord de indeling van de activiteit moet aanpassen of verborgen moet blijven totdat dit expliciet wordt gevraagd. Het gebruik van deze configuraties kan de gebruikerservaring aanzienlijk verbeteren door een meer intuïtieve en responsieve interface te bieden.

  1. Hoe verberg ik het toetsenbord als een verliest focus?
  2. U kunt de luisteraar van de en bel .
  3. Kan ik het toetsenbord automatisch weergeven wanneer een focus krijgt?
  4. Ja, gebruik in de luisteraar.
  5. Hoe kan ik het toetsenbord in een fragment verbergen?
  6. Telefoongesprek in de context van het fragment.
  7. Wat is gebruikt voor?
  8. Het specificeert hoe het toetsenbord samenwerkt met de lay-out van de activiteit, zoals het formaat wijzigen of verborgen blijven.
  9. Hoe verberg ik het toetsenbord bij aanraking buiten een ?
  10. Overschrijven in uw activiteit om te controleren op aanraakgebeurtenissen buiten de .
  11. Kan ik het toetsenbord dwingen verborgen te blijven?
  12. Ja, door instelling naar in het manifest.
  13. Hoe kan ik detecteren of het toetsenbord momenteel zichtbaar is?
  14. Gebruik om het zichtbare gebied van het scherm te vergelijken met de hoogte van de hoofdweergave.
  15. Is het mogelijk om het toetsenbord programmatisch te verbergen met een klik op een knop?
  16. Ja, bel in de knop .

Concluderend is het beheer van het Android-softtoetsenbord cruciaal voor het verbeteren van de gebruikerservaring in uw applicatie. Door het gebruiken van , kunt u het toetsenbord programmatisch verbergen of weergeven op basis van gebruikersinteracties zoals klikken op knoppen of aanraakgebeurtenissen. Bovendien configureert u de attribuut in uw manifestbestand kunt u het gedrag van het toetsenbord nauwkeuriger regelen. Het implementeren van deze methoden zorgt ervoor dat de aanwezigheid van het toetsenbord de bruikbaarheid van de app niet verstoort, waardoor gebruikers een soepele en intuïtieve interface krijgen.