Klavyeyle gezinmeyi destekleme

Android, ekran klavyeleri gibi yumuşak giriş yöntemlerinin yanı sıra cihaza bağlı fiziksel klavyeleri de destekler. Klavye, metin girişi için kullanışlı bir mod ve kullanıcıların uygulamanızda gezinip etkileşim kurmaları için bir yol sunar. Telefonlar gibi çoğu el cihazında birincil etkileşim modu olarak dokunma kullanılsa da tabletler ve benzer cihazlar popülerdir ve birçok kullanıcı bu cihazlara klavye aksesuarları takmayı sever.

Android destekli daha fazla cihaz bu tür bir deneyim sunarken uygulamanızı klavye üzerinden etkileşimi destekleyecek şekilde optimize etmeniz önemlidir. Bu dokümanda, klavyeyle gezinmeyi nasıl iyileştirebileceğiniz açıklanmaktadır.

Uygulamanızı test etme

Android sistemi, gerekli davranışların çoğunu varsayılan olarak etkinleştirdiği için kullanıcılar uygulamanızda klavye kullanarak gezinebiliyor olabilir.

Android çerçevesi tarafından sağlanan tüm etkileşimli widget'lar (Button ve EditText gibi) odaklanılabilir. Bu sayede kullanıcılar D-pad veya klavye gibi kontrol cihazlarıyla gezinebilir. Ayrıca her widget, giriş odağını aldığında parlıyor veya görünümünü değiştiriyor.

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

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

    Klavye içeren bir donanım cihazınız yoksa Bluetooth veya USB klavye bağlayın.

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

    1. AVD Yöneticisi'nde Yeni Cihaz'ı tıklayın veya mevcut bir profili seçip Klonla'yı tıklayın.
    2. Açılan pencerede Klavye ve D-pad'in etkin olduğundan emin olun.
  2. Uygulamanızı test etmek için kullanıcı arayüzünüzde gezinirken yalnızca sekme tuşunu kullanın. Her kullanıcı arayüzü denetiminin beklendiği gibi odaklandığından emin olun.

    Odağı beklenmedik bir şekilde hareket ettiren durumlar olup olmadığına bakın.

  3. Uygulamanızın başından tekrar başlayın ve klavyedeki ok tuşları gibi yön kontrollerini kullanarak kullanıcı arayüzünüzde gezinin. Kullanıcı arayüzünüzdeki her odaklanılabilir öğede Yukarı, Aşağı, Sol ve Sağ tuşlarına basın.

    Odağı beklenmedik bir şekilde hareket ettiren durumlar olup olmadığına bakın.

Tab tuşu veya yön tuşlarıyla gezinirken beklediğiniz sonucu alamadığınızda aşağıdaki bölümlerde açıklandığı gibi, düzeninizde odağın nerede olması gerektiğini belirtin.

Sekme gezinmesini ele alma

Kullanıcı, klavyedeki Sekme tuşunu kullanarak uygulamanızda gezinirken sistem, giriş odağını öğeler arasında düzende göründükleri sıraya göre aktarır. Örneğin, göreli bir düzen kullanıyorsanız ve ekrandaki öğelerin sırası dosyadaki sıradan farklıysa odak sırasını manuel olarak belirtmeniz gerekebilir.

Örneğin, aşağıdaki düzende iki düğme sağ tarafa, bir metin alanı ise ikinci düğmenin soluna hizalanmıştır. Odak, ilk düğmeden metin alanına ve ardından ikinci düğmeye aktarılmak için düzenin, odaklanılabilir öğelerin her biri için odaklanma sırasını android:nextFocusForward özelliğiyle açıkça tanımlaması gerekir.

<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 odak button1'ten button2'e ve ardından editText1'ye değil, ekrandaki görünüme göre uygun şekilde hareket ediyor: button1'ten editText1'ye ve ardından button2'ye.

Yönsel navigasyonu kullanma

Kullanıcılar, klavyedeki ok tuşlarını kullanarak da uygulamanızda gezinebilir. Bu tuşların işlevi, D-pad veya izleme topuyla gezinmeyle aynıdır. Sistem, ekrandaki görünümlerin düzenine göre belirli bir yönde hangi görünüme odaklanacağınız konusunda "en iyi tahmini" sunar. Ancak bazen sistem yanlış tahminde bulunabilir.

Sistem, belirli bir yönde gezinirken odağı uygun görünüme aktarmıyorsa aşağıdaki özelliklerle hangi görünümün odağı alması gerektiğini belirtin:

Her özellik, kullanıcı o yönde gezindiğinde odaklanacak bir sonraki görünümü belirtir (görünüm kimliğiyle belirtilir). Bu durum aşağıdaki örnekte gösterilmektedir:

<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: