Sobes.tech
Junior

Τι σημαίνει η παράμετρος windowSoftInputMode στο Android;

sobes.tech AI

Απάντηση από AI

windowSoftInputMode — είναι ένα χαρακτηριστικό στο στοιχείο <activity> στο αρχείο AndroidManifest.xml του Android, που ορίζει την αλληλεπίδραση του παραθύρου της δραστηριότητας με το εικονικό πληκτρολόγιο (εισαγωγή λογισμικού). Επηρεάζει τη συμπεριφορά του παραθύρου της δραστηριότητας κατά την εμφάνιση ή την απόκρυψη του πληκτρολογίου.

Δυνατές τιμές του χαρακτηριστικού:

  • stateUnspecified: Το πληκτρολόγιο είναι κρυφό ή εμφανίζεται ανάλογα με τις ρυθμίσεις του συστήματος και το πλαίσιο. Αυτή είναι η προεπιλεγμένη τιμή.
  • stateUnchanged: Η κατάσταση του πληκτρολογίου (κρυφό/εμφανές) δεν αλλάζει κατά την πρόσβαση σε αυτήν τη δραστηριότητα.
  • stateHidden: Το πληκτρολόγιο είναι πάντα κρυφό κατά την πρόσβαση σε αυτήν τη δραστηριότητα.
  • stateAlwaysHidden: Το πληκτρολόγιο είναι πάντα κρυφό αν το παράθυρο της δραστηριότητας έχει εστίαση.
  • stateVisible: Το πληκτρολόγιο είναι πάντα ορατό κατά την πρόσβαση σε αυτήν τη δραστηριότητα.
  • stateAlwaysVisible: Το πληκτρολόγιο είναι πάντα ορατό αν το παράθυρο της δραστηριότητας έχει εστίαση.
  • adjustUnspecified: Το σύστημα καθορίζει πώς να ρυθμίσει το μέγεθος του παραθύρου ή του περιεχομένου για να αφήσει χώρο για το πληκτρολόγιο. Αυτή είναι η προεπιλεγμένη τιμή.
  • adjustResize: Το μέγεθος του παραθύρου της δραστηριότητας αλλάζει έτσι ώστε όλο το περιεχόμενο να μπορεί να κυλιστεί και να εμφανίσει το εστιασμένο πεδίο εισαγωγής, χωρίς να καλύπτεται από το πληκτρολόγιο.
  • adjustPan: Το παράθυρο της δραστηριότητας μετατοπίζεται έτσι ώστε το τρέχον πεδίο εισαγωγής να είναι ορατό, αλλά ένα μέρος του περιεχομένου μπορεί να καλύπτεται από το πληκτρολόγιο. Το μέγεθος του παραθύρου δεν αλλάζει.
  • adjustNothing: Η σημαία έχει καταργηθεί και δεν υποστηρίζεται. Η συμπεριφορά είναι παρόμοια με το adjustUnspecified.

Μερικές τιμές μπορούν να συνδυαστούν (π.χ., stateVisible|adjustResize).

Παράδειγμα χρήσης στο manifest:

<activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:windowSoftInputMode="stateVisible|adjustResize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>