Yazılım klavyesi gösterildiğinde düzen nasıl yukarı taşınır android


85

EditTextsYerleşimimde iki ve bir giriş düğmeli bir giriş ekranım var. Sorun şu ki, yazmaya başladığımda yazılım klavyesi gösteriliyor ve oturum açma düğmesini kapsıyor. Göründüğünde düzeni klavyenin yukarısına veya yukarısına nasıl itebilirim?

A kullanmak istemiyorum ScrollView, sadece aşağı kaydırmadan uygulamak istiyorum. Lütfen bana bunu yapmanın bir yolunu önerin. Şimdiden teşekkürler.

Yanıtlar:


59

windowSoftInputModeÖzelliği adjustPanve olarak ayarlaadjustResize

<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>

33
Bu, kutunun dışında işe yaramadı, ancak çalışmasını sağlamak için değiştirdi <activity android:windowSoftInputMode="adjustResize"></activity>.
nickiaconis

2
Hangi Android sürümünü kullandığınızı belirtin. Bazı versiyonlarda bazı cevaplar tamamen işe yaramayabilir.
Josh

@nickiaconis'in dediği gibi, 'AdjustPan' parametresine ihtiyacım yok ve benim için çalışıyor, teşekkür ederim
danisupr4

Xamarin.Forms taşınabilir projesi için kullanılabilir bir eşdeğer var mı? bu yüzden her bir hedef platform için bunu yapmak zorunda değilim.
user20358

6
Ayar, aşağıdaki tabloda listelenen değerlerden biri veya bir "durum ..." değeri artı bir "ayarlama ..." değerinin bir kombinasyonu olmalıdır. Her iki grupta birden çok değer (örneğin, birden çok "durum ..." değeri) ayarlamak, tanımlanmamış sonuçlara sahiptir. developer.android.com/guide/topics/manifest/…
EmJiHash

34

Bunu, etkinliğe karşılık gelen android bildirim dosyasında deneyin.

<activity android:windowSoftInputMode="adjustPan"> </activity>

1
loyout'um ilk seferinde yukarı hareket ediyor, ancak klavyeyi kapatıp tekrar açtığınızda hareket etmiyor.
nabeghe

24

Bu kodu onCreate()yöntemde kullanın :

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

1
Teşekkürler, bu yardımcı oldu. <activity android: windowSoftInputMode = "AdjustPan"> </activity> bazı nedenlerden dolayı benim için çalışmadı.
DH28

1
Bu yöntem, ancak SOFT_INPUT_ADJUST_RESIZEADJUST_PAN yerine kullanın , benim için çalıştı
Voy

17

bir tek

android:windowSoftInputMode="adjustResize"

Manifest dosyası içindeki etkinlik etiketiniz, işinizi görecektir


ConstraintLayout kullanıyorum, bu çözüm benim için çalışmıyor.
Karan Sharma

Bu cevabı yazarken, ConstraintLayout Android mizanpajlarına eklenmemişti. Lütfen bu ileti dizisinde size en uygun başka bir çözüm bulun. Ve tabii ki, zamanı aldığımda ConstraintLayout için cevabımı güncelleyeceğim. Rapor
ettiğiniz

13

Bu satırı, manifest.xml'deki etkinlik bildirim süresine koyun

<android:windowSoftInputMode="adjustPan">

10

Bunu bir şekilde cihazdaki yazılım klavyesinin durumunu bilerek başardım. i klavye gösterildiğinde düzeni y konumuna taşıdı ve gösterilmediğinde orijinal konumuna geri döndü. bu iyi çalışıyor, bu yönergeleri takip edin .


2
Klavye gösterildiğinde düzeni yukarı taşıyabiliyorum, ancak klavye gizlendiğinde orijinal konumuna hareket edemiyorum, bu konuda bana yardımcı olabilir misiniz?
Kishore

9
android:fitsSystemWindows="true"

pafta dosyasının ana mizanpajına özellik ekleyin ve

android:windowSoftInputMode="adjustResize"

Activty'nizdeki Manifest.xml dosyanıza satır ekleyin

benim için mükemmel bir iş.


fitsSystemWindows'un klavyeyle hiçbir ilgisi yok
Tim

@TimCastelijns, benim durumumda (tam ekran etkinliği) önemli. Olarak ayarlanırsa false, görünümler yukarı hareket etmeyecektir.
CoolMind

6

Bunu manifest dosyasındaki etkinlik bildiriminize koyun <activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>

veya isterseniz etkinliğinizin onCreate () yöntemini ekleyebilirsiniz

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

2
Manifest kodu yanlış, bu şekilde davranış tanımsızdır (iki çakışma değeri belirlersiniz, bakınız offdoc: developer.android.com/guide/topics/manifest/… , android:windowSoftInputModeaçıklama). @ kiwicomb123, bir parametre seçin, yoksa sistem sizin için seçecektir (ve bu seçim başka bir cihazda / API sürümünde değişebilir)
kpower

3

Tek gereken bu:

<activity android:windowSoftInputMode="adjustResize"> </activity>

2

Bu rehbere göre , bunu başarmanın doğru yolu manifestonuzda beyan etmektir:

<activity name="EditContactActivity"
        android:windowSoftInputMode="stateVisible|adjustResize">

    </activity>

Görünüşe göre stateVisible, etkinlik başladığında açılmasına neden olacak, bu nedenle klavyeyi gerçekten yukarı itmek gerekli değil.
CodyEngel

2

Yazılım klavyesi göründüğünde, ana mizanpajın boyutunu değiştirir ve yapmanız gereken, o ana düzen için bir dinleyici oluşturmak ve bu dinleyicinin içinde scrollT0(x,y)yukarı kaydırmak için kodu eklemektir .


2

Xamarin ile çalışıyorsanız, bu kodu WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResizeMainActivity sınıfının activity özniteliğine koyabilirsiniz. Örneğin, şimdi aktivite özelliği aşağıdaki gibi görünecek

    [Activity(WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResize)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
    {
        //some code here.
    }

2

Bunu manifest'e kod ekleyerek çözüyorum:

<activity android:name=".Login"
        android:fitsSystemWindows="true"
        android:windowSoftInputMode="stateHidden|adjustPan"
</activity>

mükemmel. fitSystemWindows benim için çalıştı.
Bawa

1

Kullanmalısın

android:windowSoftInputMode="adjustPan|stateHidden"

AndroidManifest.xmlfaaliyetinizi beyan ettiğiniz dosyanızda. Bu, düzende klavye gösterildiğinde düzen içeriğinizi ayarlayacaktır.


0

Göreceli düzeni kullanın, metni yazarken bu görünümü görebilmeniz için görünümü ayarlar.


0

Bu benim için bir cazibe gibi çalışıyor

getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

-2

Bu kesinlikle sizin için çalışacak.

android: windowSoftInputMode = "AdjustPan"


1
Biraz açıklama ekleyebilir misin ...?
chevybow

Sadece AndroidManifest.xml dosyanıza gidin ve klavye açılır
penceresinde
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.