2010-06-04 10 views
10

Mam prosty interfejs użytkownika: EditText powinien znajdować się pod SurfaceView. Używam RelativeLayout do rozmieszczenia tych dwóch widoków.EditText systemu Android jest ukryty, gdy wyświetlana jest wirtualna klawiatura i obiekt SurfaceView.

Teraz, kiedy stukam w EditText, aby otworzyć wirtualną klawiaturę, SurfaceView ślizga się, ale EditText jest ukryty i nie pokazuje wpisanego ciągu znaków.

Aby odtworzyć, należy użyć następującego kodu XML układ:

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

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/RelativeLayout01" 
android:layout_height="fill_parent" 
android:layout_width="fill_parent"> 

<SurfaceView 
android:id="@+id/SurfaceView01" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content"> 
</SurfaceView> 

<EditText 
android:id="@+id/EditText01" 
android:layout_height="wrap_content" 
android:layout_width="fill_parent" 
android:layout_alignParentLeft="true" 
android:layout_alignParentBottom="true" 
android:selectAllOnFocus="true" 
android:textStyle="normal" 
android:singleLine="true"> 
</EditText> 

</RelativeLayout> 

Główna klasa aktywny tylko musi pokazać układ. Gdy uruchomię program i dotknę EditText, pojawi się wirtualna klawiatura, ale pole EditText zniknęło.

Być może RelativeLayout powoduje problemy, ale nie wiem, jak odtworzyć ten sam układ z inną klasą układu.

Wszelkie sugestie są mile widziane, naprawdę dziękuję za pomoc.

Dzięki.

Edit:

Oto dwa screeny, jeden pokazujące EditText na dole bez klawiatury wirtualnej, jeden z wirtualną klawiaturą, ale bez EditText. Warto zauważyć, że SurfaceView i EditText faktycznie przesuwają się w górę, EditText po prostu znika. BTW to również dzieje się z przyciskiem, jeśli jest obok EditText.

EditText below a SurfaceView (left); EditText is gone (right)

+0

Możesz rozważyć dołączenie zrzutu ekranu, z których jedna jest ukryta (np. "normalny")) i jeden po dotknięciu "EditText", aby wywołać klawiaturę. Możesz użyć DDMS, aby zrobić zrzuty ekranu. – CommonsWare

+1

Ten błąd został zgłoszony: http://code.google.com/p/android/issues/detail?id = 11676 – Jan

Odpowiedz

8

Jako komentator w thread about this bug zasugerował, że jest bardzo łatwo rozwiązać ten problem przez ustawienie koloru tła SurfaceView lub GLSurfaceView do przezroczysta z mSurfaceView.setBackgroundColor(Color.TRANSPARENT); również.

Ten problem wystąpił w przypadku naciśnięcia przycisku EditText na plaster miodu (v13) na karcie Samsung Galaxy Tab 10.1. Problem polegał na tym, że po zmianie rozmiaru GLSurfaceView na jego miejscu wciąż znajdował się czarny prostokąt, który obejmował EditText. To rozwiązanie działa przez uczynienie tego błędnego prostokąta przezroczystym, dzięki czemu można zobaczyć EditText.

+2

Dziękuję bardzo, chciałbym móc +100! –

1

Dodaj kod naśladowania dla swojej działalności w swoim AndroidManifest.xml android:windowSoftInputMode="adjustPan"

0

Tak, to prawda! Dodaj kod naśladowania dla swojej działalności w swoim AndroidManifest.xml android:windowSoftInputMode="adjustPan"

I edycji tekstu, wystarczy dodać:

android:imeOptions="flagNoFullscreen" 
0

znalazłem, że ma inny wynik na różnych urządzeniach, a następnie użyć jako Scrollview widoku głównego i umieścić układ w ScrollView, gdy używasz trybu pełnego ekranu, działa dobrze. i upewnij się, że ustawisz android: fillViewport = "true", jeśli nadal masz jakiś problem, daj mi znać [email protected]

Powiązane problemy