2010-06-04 27 views
10

Tôi có giao diện người dùng đơn giản: EditText phải nằm bên dưới SurfaceView. Tôi sử dụng RelativeLayout để sắp xếp hai chế độ xem này.EditText của Android bị ẩn khi bàn phím ảo được hiển thị và SurfaceView có liên quan

Bây giờ, khi tôi chạm vào EditText để mở bàn phím ảo, SurfaceView sẽ trượt lên nhưng EditText bị ẩn và không hiển thị chuỗi đã nhập.

Để tái sản xuất, sử dụng mã layout XML sau:

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

Lớp Hoạt động chính chỉ cần để hiển thị bố trí. Khi tôi khởi động chương trình và nhấn EditText, bàn phím ảo xuất hiện nhưng trường EditText đã biến mất.

Có thể RelativeLayout đang gây ra sự cố, nhưng tôi không biết cách tạo lại cùng một bố cục với một lớp Bố cục khác.

Bất kỳ đề xuất nào đều được chào đón, tôi thực sự đánh giá cao sự giúp đỡ của bạn.

Cảm ơn.

Edit:

Dưới đây là hai ảnh chụp màn hình, người ta thấy sự EditText ở phía dưới mà không cần bàn phím ảo, một với bàn phím ảo nhưng không có EditText. Thật thú vị khi lưu ý rằng SurfaceView và EditText thực sự chuyển lên trên, EditText chỉ biến mất. BTW điều này cũng xảy ra với một nút nếu nó là bên cạnh EditText.

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

+0

Bạn có thể cân nhắc đính kèm một ảnh chụp màn hình, một ảnh bị ẩn bàn phím mềm (tức là "bình thường") và một sau khi bạn nhấn vào 'EditText' để hiển thị bàn phím. Bạn có thể sử dụng DDMS để thực hiện các ảnh chụp màn hình. – CommonsWare

+1

Lỗi này đã được báo cáo: http://code.google.com/p/android/issues/detail?id = 11676 – Jan

Trả lời

8

Là một commenter trong thread about this bug đề nghị, nó rất dễ dàng để khắc phục vấn đề này bằng cách thiết lập màu nền của SurfaceView hoặc GLSurfaceView để minh bạch với mSurfaceView.setBackgroundColor(Color.TRANSPARENT); là tốt.

Sự cố này xảy ra với tôi khi nhấn EditText trên Honeycomb (v13) trên Samsung Galaxy Tab 10.1. Vấn đề là sau khi các GLSurfaceView được thay đổi kích cỡ, ở vị trí của nó vẫn là một hình chữ nhật màu đen được bao phủ các EditText. Giải pháp này hoạt động bằng cách làm cho hình chữ nhật sai lệch đó trong suốt, vì vậy bạn có thể nhìn thấy EditText.

+2

Cảm ơn bạn rất nhiều, tôi ước tôi có thể +100! –

1

Thêm mã sau cho hoạt động của bạn trong AndroidManifest.xml của bạn android:windowSoftInputMode="adjustPan"

0

Có, đó là đúng! Thêm mã sau cho hoạt động của bạn trong AndroidManifest.xml của bạn android:windowSoftInputMode="adjustPan"

Và trong chỉnh sửa văn bản của bạn, chỉ cần thêm:

android:imeOptions="flagNoFullscreen" 
0

tôi thấy rằng nó có kết quả khác nhau trên các thiết bị khác nhau, sau đó tôi sử dụng scrollview như khung nhìn gốc và đặt bố trí vào ScrollView, khi sử dụng chế độ fullScreen nó hoạt động tốt. và chắc chắn đặt android: fillViewport = "true" nếu bạn vẫn gặp sự cố nào đó cho tôi biết [email protected]

Các vấn đề liên quan