Android: Klavyede arka plan resmi yeniden boyutlandır

Arka plan görüntüsünün klavyeyle açılır pencerede küçüleceği bir uygulama geliştiriyorum. .Xml'im aşağıdaki gibidir:



    

        

            /**
              Other stuff 
            */

        
    

Google’da arama yaptım ve eklemek için

android:windowSoftInputMode="stateVisible|adjustPan"

manifest dosyamda. Ama faydası yok.

Düzenle:

Klavye açılmadan önceki Düzenim şöyle görünür:

Image 1

Ve sonra pop up gibi:

Image 2

Lütfen arka plan resmindeki farkı kontrol edin. Resim 1'de resim boyutunda ve resim 2'de arka plan resmi küçültülmüştür. Altbilgiye ihtiyacım var ve arka plan klavye açılırken yukarı doğru kayıyor.

Ne kaçırdığımı ya da yanlış yaptığımı lütfen önerin.

27
adjustPan tam olarak ihtiyacınız olanı yapmalıdır ( "Yazılım klavyesine yer açmak için etkinliğin ana penceresi yeniden boyutlandırılmadı. Aksine, pencerenin içeriği otomatik olarak kaydırılır" ) , bkz. docs . Ne sorunu yaşıyorsun?
katma yazar matiash, kaynak
Lütfen ekranınıza sorununuzu ekleyin.
katma yazar Volodymyr Kulyk, kaynak
Bu soru bu bir kopyasıdır.
katma yazar Lamorak, kaynak
neden görüntüyü kaydırma görünümünün arka planına koymuyorsunuz? veya tüm ekran boşluğunu dolduran ve onu arka plan olarak ayarlayan, ilişkisiz bir görüntü oluşturma, çünkü göreceli bir düzenlemedir.
katma yazar Elltz, kaynak

12 cevap

Bu kodu onCreate() 'da kullanın:

protected void onCreate(Bundle savedInstanceState) {
...   
 getWindow().setBackgroundDrawableResource(R.drawable.your_image_resource);
...
}

ve bu satırı xml'inizde kaldırın:

android:background="@drawable/background"

Da daha fazlasını oku:

http://developer.android.com/reference/android/view/Window.html

28
katma
Lütfen düzenlenmiş gönderiyi kontrol edin. 2 resim yükledim.
katma yazar Manoj Fegde, kaynak
Öneriniz için teşekkürler ve geç cevap için özür dilerim. Cevabını denedim. Çalışıyor, ancak ihtiyacım olan şey arka plan görüntüsünün klavyede yukarı kaydırılması, arkasına gizlenmemesi.
katma yazar Manoj Fegde, kaynak
@ManojFegde Sorunuzu lütfen ne istediğinizi bir resim ile düzenleyebilir misiniz?
katma yazar Adrian Cid Almaguer, kaynak
@ManojFegde biraz ilerleme kaydettiniz mi?
katma yazar Adrian Cid Almaguer, kaynak

Tamam sorunuzu doğru anladıysam, arkaplan ve kaydırma görünümü içeren bir düzen istersiniz. Yazılım klavye açıldığında, kaydırma görünümünü yeniden boyutlandırmak istiyorsunuz, ancak arka planı tam boyutta tutmak mı istiyorsunuz? benden istediğin buysa, bu sorun için bir geçici çözüm bulmuş olabilirim:

Yapabilecekleriniz , 2 etkinlik yapabilir.

Etkinlik 1:

public class StartActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent StartApp = new Intent(this, DialogActivity.class);
    startActivity(StartApp);        //Launch your official (dialog) Activity

    setContentView(R.layout.start); //your layout with only the background 
    }
}

Activity2:

public class DialogActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); //get rid of dimming
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);  //get rid of title bar (if you want)

    setContentView(R.layout.dialog);  //Dialog Layout with scrollview and stuff

    Drawable d = new ColorDrawable(Color.BLACK);  //make dialog transparent
    d.setAlpha(0);
    getWindow().setBackgroundDrawable(d);
    }
}

mizanpajı başlat:

  //your background

iletişim kutusu düzeni:



    

            

                <!-- All your Scrollview Items -->

            
     

AndroidManifest.xml'sinde

Aktivite Başlat:

android:theme="@android:style/Theme.NoTitleBar.Fullscreen">

iletişim etkinliği

android:theme="@android:style/Theme.Dialog"
android:windowSoftInputMode="adjustResize"
android:excludeFromRecents="true"

Edit: To finish Activities at once use the following somewhere inside your DialogActivity (example: override the backbutton):

@Override
public void onBackPressed() {
    Intent intent = new Intent(getApplicationContext(), StartActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.putExtra("EXIT", true);
    startActivity(intent);
}

ve StartActivity'nin onCreate() öğesinde:

if (getIntent().getBooleanExtra("EXIT", false)) {
    finish();
}
else {
    Intent StartApp = new Intent(this, TestActivity.class);
    startActivity(StartApp);
}

Screenshots!

Normal Normal

Clicked the EditText box Clicked textbox

After Scrolled down (ps: i put textbox inside scrollview thats why its gone ;) ) after scrolled down

I hope this will help your out ;)

7
katma

Ben de aynı sorunla karşı karşıya kaldım, benim faaliyetiniz ilan edildiği yerde kullanmak için aşağıdaki özellikleri kullanarak benimki çözüldü.

 android:windowSoftInputMode="stateHidden|adjustResize|adjustPan"
7
katma
scrollview doz bu çözüm ile çalışmıyor :-(
katma yazar Sid, kaynak
Bu harika, basit bir çözüm adam, teşekkürler :)
katma yazar Antarix, kaynak
bu bilgi için teşekkürler :)
katma yazar Antarix, kaynak
sonunda fark edilmek iyi hissettiriyor
katma yazar mushahid, kaynak
Etkinlik başladığında klavyenin gizlenmesini istemiyorsanız btw stateHidden bölümünü
katma yazar mushahid, kaynak

Aşağıdaki görünümü heirarşi ve benim için iyi çalışıyor kullanıyorum:

<?xml version="1.0" encoding="utf-8"?>


    

        
5
katma
Hiçbir işe yaramaz. Arka plan daralıyor.
katma yazar Manoj Fegde, kaynak
Arka plan resmi hakkında soruyorum. Görüntüden ve küçülmesinden bahsetmedin.
katma yazar Manoj Fegde, kaynak

Hey, lütfen bunu eklemeyi deneyebilir misin?

android:isScrollContainer="false" 

ScrollView 'ınızda. Sorunumu bir kez çözdü. Sana da yardım edebilirim.

Ayrıca bunu manifest.xml'deki etkinliğinize ekleyin

android:windowSoftInputMode="adjustPan"

Umarım yardımcı olur..!! :)

4
katma
hmm, teşekkürler, bu da liste görünümü için çalışıyor
katma yazar HendraWD, kaynak
Bu iş benim için :)
katma yazar Catarina Ferreira, kaynak

android: background = "@ drawable/background"ImageView ' da ScrollView 'ın üstüne taşımalısınız. Klavye açıldığında ekran etkili bir şekilde küçülür ve arka plan olarak bir görüntünün olması, nasıl yeniden boyutlandırılacağına/kırpılacağına dair hiçbir kontrolünüz yoktur. Öyleyse, görüntünün tam genişliğine sahip olmak istediğinizi, ancak artan oranın korunmasını istediğinizi varsayalım:



    

    
                   
            /**
            Other stuff
            */
        
    

İstediğiniz efekti elde etmek için farklı android: scaleType değerlerini deneyebilirsiniz. Görüntünün, varsayılan orta kırpma yerine üstten kırpılmasını istiyorsanız, bkz. burayı Bunun nasıl başarılacağı veya bu kütüphaneyi kullanmayı deneyin

3
katma

Ben de aynı sorunu yaşadım.

Dış düzen arkaplanınızı onCreate metodunun içine aşağıda gösterildiği gibi ekleyin

getWindow().setBackgroundDrawableResource(R.drawable.login_bg);

ve dış düzeninizi olarak ekleyin



Dış düzen için android: layout_weight = "1" ekleyin ve xml dosyasında arka plan belirleme Bunun birine yardım ettiğini düşünüyorum

2
katma
Teşekkürler dostum yardım etti !!!
katma yazar Name Surname, kaynak

bu cevabı kontrol edin, temel püf noktası arka planı platforma değil pencereye ayarlamanızdır. Bu, getWindow (). SetBackgroundDrawable() ile aktiviteden yapılabilir veya aktivitenize göre bir temada ayarlayabilirsiniz.

1
katma

AndroidManifest.xml dosyanızdaki Etkinlik öğesindeki windowSoftInputMode ayarında adjustResize seçeneğini kullanmalısınız.

1
katma

ScrollView'ü üst ebeveyn olarak kullanın. Klavyeyi açıp kapattığınızda otomatik olarak yukarı ve aşağı kaydırılır.

0
katma

Neden böyle yapmıyorsun

    

        
  
  
0
katma

android: windowSoftInputMode = "stateVisible | adjustPan" yerine, android: windowSoftInputMode = "stateVisible | adjustResize" olarak değiştirmelisiniz. Benim için çalıştı.

0
katma
Bunu denedim ama işe yaramadı, arama sırasında düzenimin kaydırma görünümünden kaynaklandığını biliyorum.
katma yazar Manoj Fegde, kaynak
Belki AndroidManifest.xml dosyanızdan dolayı, bildirim kodunuzu kopyalayıp buraya yapıştırabilir misiniz?
katma yazar Optimus NTL, kaynak