Android Klavyesi Çıktığında Layout Üste Kaydırma

Merhaba arkadaşlar,  Android de klavye açıldığı zaman ilgili layout umuzu yukarıya nasıl taşıdığımızı göstereceğim daha iyi anlamak için xml çıktılarımızı kopyalayıp uygulamanıza yapıştırabilirsiniz. Neden böyle bir duruma ihtiyaç duyarız önce onu anlatayım, kullanıcının üç tane alanda veri girmesi gerekiyor diyelim, bunlarda kullanıcı adı, şifre ve tc kimlik numarası olsun.

Kullanıcı adına tıkladığı an sadece o alan gözüküp, diğer alanların gözükmemesi gerekir çünkü kullanıcı adını yazmak istediğimizde ilgili alanı doldurmak isteriz başka bir alanın onun üstüne gelmesi yada klavyenin bütün ekranı kaplayıp, kullanıcıya ne yazdığını gösterememesi gibi durumlarla karşılaşıldığında uygulayacağımız yol AndroidManifest.xml dosyamızda ilgili activitye aşağıdaki kod bloğunu eklemektir.

android:windowSoftInputMode="adjustResize"

Aşağıdaki xml çıktısını bu olayın nasıl gerçekleştiğini anlamanız için koydum. Bir android projesi yaratıp ilgili layout a yapıştırıp, uygulamayı çalıştırın ve her bir EditText e tıkladığımız an klavyenin o alanda açıldığını göreceksiniz.

not: adjustResize yapısının düzgün bir şekilde çalışabilmesi için tavsiyem; ScrollView yapısını kullanmanızdır.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:background="@color/accent_material_light"
    android:layout_height="match_parent" tools:context=".MainActivity">

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

    <RelativeLayout
        android:id="@+id/center_layout"
        android:layout_marginRight="20dp"
        android:layout_marginLeft="20dp"
        android:layout_marginBottom="40dp"
        android:layout_marginTop="40dp"
        android:background="@drawable/bordered_layout"
        android:layout_width="fill_parent"
        android:layout_height="500dp">

        <LinearLayout
            android:layout_centerInParent="true"
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">

            <EditText
                android:layout_marginBottom="20dp"
                android:hint="Kullanıcı Adı Giriniz"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" />
            <EditText
                android:inputType="number"
                android:layout_marginBottom="20dp"
                android:hint="Şifre Giriniz"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" />
            <EditText
                android:layout_marginBottom="20dp"
                android:hint="TC Kimlik Numarası Giriniz"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content" />


            </LinearLayout>


    </RelativeLayout>

    </ScrollView>
</RelativeLayout>

 

3

Alper Beyler

Yüksek Lisans: Çankaya Üniversitesi / Bilgisayar Mühendisliği
Lisans: Çankaya Üniversitesi / Bilgisayar Mühendisliği (4/3.30) (2010-2014)
Lisans : Viyana Teknik Üniversitesi / Bilgisayar Bilimleri (2013)

1 Yorum

  • bu uygulama güzel ama sayfada ListView var ise onun ScrollView özelligi bozuluyor onun etkilenmemesi gerekiyor.

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?