Klavyeyle gezinmeyi destekleme

Yumuşak giriş yöntemlerine ek olarak (ekranda olduğu gibi) klavyeler: Android, cihaza takılı fiziksel klavyeleri destekler. CEVAP klavye, metin girişi için kullanışlı bir mod ve kullanıcıların uygulamanızda gezinme ve etkileşim kurma. Örneğin, Telefonlarda birincil etkileşim modu olarak dokunmatik ekran, tabletler popüler cihazlardır ve birçok kullanıcı klavye aksesuarlarını gerekir.

Android destekli cihazların sayısı arttıkça bu tür bir deneyim sunmak klavye üzerinden etkileşimi destekleyecek şekilde optimize etmenizi öneririz. Bu dokümanında, klavyeyle gezinmeyi nasıl iyileştirebileceğiniz açıklanmaktadır.

Uygulamanızı test etme

Kullanıcılar klavye kullanarak uygulamanızda gezinebiliyor olabilir, çünkü Android sistemi, gerekli davranışların çoğunu varsayılan olarak etkinleştirir.

Android çerçevesi tarafından sağlanan tüm etkileşimli widget'lar; Button ve EditText - odaklanılabilir. Bu, kullanıcıların D-pad gibi kontrol cihazlarıyla gezinebileceği anlamına gelir. ve widget'lar üzerindeki her widget parlar veya görünümü başka bir şekilde giriş odağı haline gelir.

Uygulamanızı test etmek için aşağıdaki prosedürü uygulayın:

  1. Uygulamanızı, donanım klavyesi bulunan bir cihaza yükleyin.

    Klavyeli bir donanım cihazınız yoksa bir Bluetooth ya da USB klavye olması gerekir.

    Android emülatörünü de kullanabilirsiniz:

    1. AVD Yöneticisi'nde Yeni Cihaz'ı tıklayın veya Mevcut profilinizi seçin ve Klonla'yı tıklayın.
    2. Görüntülenen pencerede Klavye ve DPad'in açık olduğundan emin olun etkin.
  2. Uygulamanızı test etmek için yalnızca Sekme tuşunu kullanarak Kullanıcı arayüzü. Her kullanıcı arayüzü kontrolünün beklendiği gibi odaklandığından emin olun.

    Odağın beklenmedik bir şekilde hareket ettiği durumları arayın şekilde ele alacağız.

  3. Uygulamanızın başından tekrar başlayın ve kullanıcı arayüzünde gezinin klavyedeki ok tuşları gibi yön kontrollerini kullanın. Her birinden odaklanılabilir öğe için Yukarı, Aşağı tuşlarına basın Sol ve Sağ.

    Odağın beklenmedik bir şekilde hareket ettiği durumları arayın şekilde ele alacağız.

Sekme tuşuyla gezinmede herhangi bir durumla karşılaşırsanız özelliklerinizin beklediğiniz gibi olmadığını düşünüyorsanız odağın aşağıdaki bölümlerde açıklandığı gibi sizin düzeninizde olmalıdır.

Sekmede gezinmeyi işleme

Kullanıcı, klavyenin Sekme tuşunu kullanarak uygulamanızda gezindiğinde, sistem, öğeler arasında giriş odağını bulundukları sıraya göre iletir. görünür. Örneğin, göreli bir düzen kullanırsanız ve öğe sıralaması dosyadakinden farklıysa odak sırasını manuel olarak belirtmeniz gerekebilir.

Örneğin, aşağıdaki düzende iki düğme sağa hizalanmıştır bir metin alanı da ikinci düğmenin soluna hizalanır. Geçmek için ilk düğmeden metin alanına, ardından ikinci düğmeye düzeninin odaklanılabilir öğelerin her biri için odak sırasını içeren android:nextFocusForward özelliğini gönderin.

<androidx.constraintlayout.widget.ConstraintLayout ...>
    <Button
        android:id="@+id/button1"
        android:nextFocusForward="@+id/editText1"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        ... />
    <Button
        android:id="@+id/button2"
        android:nextFocusForward="@+id/button1"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/button1"
        ... />
    <EditText
        android:id="@id/editText1"
        android:nextFocusForward="@+id/button2"
        app:layout_constraintBottom_toBottomOf="@+id/button2"
        app:layout_constraintRight_toLeftOf="@id/button2
        ...  />
    ...
</androidx.constraintlayout.widget.ConstraintLayout>

Artık button1 ürününden button2 ve ardından editText1, uygun şekilde hareket ediyor ekrandaki görünüme göre: button1 ile arasında editText1, ardından button2.

Yönlü gezinmeyi işleme

Kullanıcılar klavyedeki ok tuşlarını kullanarak da uygulamanızda gezinebilirler. D-pad veya iztopuyla gezinmeyle aynı şekilde davranır. Sistem "en iyi tahmin" sağlar odaklanılacak görünüm için size yardımcı olabilir. Ancak bazen sistem, tahmin ettiniz.

Sistem, belirli bir bölmede gezinirken odağı uygun görünüme belirtilen yönde, aşağıdaki özellikler:

Her özellik, kullanıcı odaklanıldığında odaklanılacak bir sonraki görünümü görünüm kimliği tarafından belirtilen şekilde o yönde gezinir. Bu işlem şu örneği inceleyin:

<Button
    android:id="@+id/button1"
    android:nextFocusRight="@+id/button2"
    android:nextFocusDown="@+id/editText1"
    ... />
<Button
    android:id="@id/button2"
    android:nextFocusLeft="@id/button1"
    android:nextFocusDown="@id/editText1"
    ... />
<EditText
    android:id="@id/editText1"
    android:nextFocusUp="@id/button1"
    ...  />

Ek kaynaklar

Aşağıdaki ilgili kaynaklara bakın: