2010-07-18 35 views
6

Tôi có một cửa sổ hộp thoại bao phủ 1/3 chiều cao toàn màn hình và được hiển thị trên đầu hoạt động của tôi. Hộp thoại chứa hai trường AutoCompleteTextView.Danh sách lựa chọn bị cắt trong AutoCompleteTextView trong Hộp thoại

Sự cố mà tôi đang gặp phải là khi người dùng bắt đầu nhập nội dung vào AutoCompleteTextView, danh sách có tất cả các đề xuất chỉ hiển thị ở cuối phần cuối của hộp thoại, nhưng không vượt quá danh sách đó . Có vẻ như nó bị cắt. (ảnh chụp màn hình bên trái)

Chỉ sau khi tôi nhấn và giữ một mục từ danh sách đề xuất, danh sách sẽ được hiển thị ở độ dài đầy đủ. (Ảnh chụp màn hình bên phải)

Screenhot là tại địa chỉ: http://img704.imageshack.us/i/dialogdropdown.png/ screenshot http://img704.imageshack.us/img704/1893/dialogdropdown.png

Làm thế nào để sửa chữa hành vi này để danh sách cho thấy chiều dài đầy đủ ngay từ đầu, khi người dùng bắt đầu gõ một cái gì đó?

Code-khôn ngoan không có gì đặc biệt, tất cả tôi làm là:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getContext(), R.layout.nav_route_autocomplete_row, locStrings);   
AutoCompleteTextView txtStartPos = (AutoCompleteTextView) findViewById(R.id.txtStartPos); 
txtStartPos.setAdapter(adapter); 
... 

Một workaround ý tưởng là bằng cách nào đó cử một sự kiện chuyển động để mô phỏng một cảm ứng (nhưng sau đó không chọn mặc dù) một trong các mục danh sách . Bất kỳ ý tưởng cụ thể nào về mã cho giải pháp, bất kỳ ai?

Trả lời

1

Ngay bây giờ tôi đang giả định đó là một lỗi, mà tôi đã nộp ở đây: http://code.google.com/p/android/issues/detail?id=9917

Nhưng nếu ai biết một giải pháp cho điều này, tôi muốn đánh giá rất cao và nó sẽ được vui để trao đổi nó cho một số tiền thưởng điểm.

Edit:

Một workaround mà đến tâm trí của tôi bây giờ là mở rộng hộp thoại để dưới cùng của màn hình nhưng để lại phía sau trong suốt, vì vậy nó trông giống như bây giờ, nhưng thực sự có một chiều cao mà sẽ không cắt bỏ danh sách. Tôi sẽ thử một lần ...

0

Chỉ cần chụp trong bóng tối, nhưng bạn đã thử đặt android:clipChildren thành false trên chế độ xem cho hộp thoại trên đầu Hoạt động của bạn?

+0

Tôi đã cố gắng thiết lập thuộc tính đó cho LinearLayout bên ngoài của bố cục hộp thoại của tôi và cũng cho tất cả những người khác trong đó AutoCompleteTextView là một (con) con của. Nhưng nó không giúp được gì. Vì nó là một hộp thoại, nó sẽ giống như window.setClipChildren (false), nhưng tiếc là một phương thức như vậy không tồn tại trong cửa sổ. Hoặc một số cờ như window.setFlags (WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS); nhưng tất cả đều không giúp ích gì. –

0

Tôi đã đạt được thành công điều này, nhưng nó không phải là khá.

tôi đã kết thúc trọng phương pháp SimpleCursorAdapter.newView() tôi, bước lên những bậc ViewParent cho đến khi tôi đạt đến gốc View, và sau đó sửa đổi WindowManager.LayoutParams của mình bằng ORing trong FLAG_LAYOUT_NO_LIMITS cờ.

Điều này cần được làm lại mỗi khi trình đơn thả xuống được hiển thị.

1

Cách đây không lâu, tôi đã gặp sự cố này. Tôi đã có hộp thoại nhỏ với AutoCompleteTextView, có hơn 10 mục trong danh sách thả xuống. Danh sách này đã bị cắt. Giải pháp của tôi là:
Đưa ra một số sản phẩm nào View trong file layout Dialog của tôi với các thông số

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 
<!-- 
Some Views placed here 
--> 
     <View 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:visibility="invisible" /> 

</LinearLayout> 

Nó làm hộp thoại nhỏ của tôi giống như một hộp thoại toàn màn hình, nhưng actualy rằng "đuôi" đã không được thể hiện, và thả xuống của tôi wasn 't cutted ở tất cả, gây ra nó có đủ chỗ để hiển thị các mục danh sách từ DropDown.

0

Như đã thấy ở đây: Scrolling drop-down-menu over the keyboard in autocompletetextview

Bạn có thể sử dụng thuộc tính android: dropDownHeight của AutoCompleteTextView để buộc nó phải có chiều cao nhất định. Điều này không thực sự giải quyết vấn đề, nhưng là tốt nhất tôi có thể tìm thấy.

Lưu ý: Sự cố này chỉ xảy ra khi sử dụng AutoCompleteTextView bên trong Hộp thoại. Khi nó được sử dụng trên cách bố trí của một hoạt động hoặc một mảnh nó chỉ hoạt động tốt.

Sự cố này có ở tất cả các cách từ Gingerbread tới Jelly Bean.

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