2013-03-26 62 views
5

Tôi có thể thiếu thứ gì đó đơn giản ở đây, nhưng tôi có AutoCompleteTextView có chứa một số mục rất dài. Khi một cái được nhấp, nó sẽ hiển thị văn bản chính xác trong EditText và kéo dài nó qua nhiều dòng.Bố cục tùy chỉnh Android cho AutoCompleteTextView

Tuy nhiên, tôi cũng muốn có nhiều dòng trên cửa sổ bật lên để người dùng có thể xem mục họ đang chọn.

Dưới đây là cách bố trí tùy chỉnh của tôi:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:ellipsize="none" 
    android:maxLines="100" 
    android:scrollHorizontally="false" /> 

Đây là khởi của tôi về mảng và bộ chuyển đổi:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       R.layout.dropdown_item_wrap_line, 
       getResources().getStringArray(R.array.building_descriptions)); 

mBuildingDesc.setAdapter(adapter); 
+0

Bạn có cần nhiều hàng trong một phần tử? Tôi có nghĩa là một cái nhìn duy nhất trong AutoCompleteTextView nên chứa hai hàng và bạn sẽ sử dụng hàng thứ hai để hiển thị một số thông tin khác? Tôi đúng không? –

+0

Xin lỗi không, tôi chỉ có ý nghĩa cho một lượt xem kết thúc tốt đẹp hơn là cắt bỏ, các mục của tôi có thể khá dài (ví dụ như "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam ultricies tempus neque, nec egestas erat tincidunt et.") –

Trả lời

9

tôi đoán là AutoCompleteTextView của bạn được giới hạn trong singleLine, vì vậy sử dụng một cách bố trí tùy chỉnh với mặc định TextView sẽ hoạt động gọn gàng.

Bạn sẽ cần phải thực hiện một mới Layout và đặt tên cho nó custom_item.xml, sau đó làm điều đó như thế này ...

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <TextView 
     android:id="@+id/autoCompleteItem" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="5dp" 
     android:textSize="14sp"  
     /> 

</LinearLayout> 

Sau đó, khi sử dụng Adaptor trên AutoCompleteTextView làm

AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.custom_item, R.id.autoCompleteItem, StringArray); 
textView.setAdapter(adapter); 
+0

Điều này hoạt động hoàn hảo! Cảm ơn bạn rất nhiều! –

+0

Điều này hoạt động như thế nào bao giờ hết, nếu bạn đang đi để có được văn bản của mục bạn có thể có một vấn đề. Vì vậy, đầu tiên bạn thiết lập setOnItemClickListener của bạn, sau đó là view View param, không còn là một TextView mà là một LinearLayout nữa. – cutiko

+0

tôi không nghĩ vậy, tôi đã sử dụng arrayAdapter tùy chỉnh và nó hoạt động với các dòng đơn mặc dù tôi không kiểm tra với bố cục tùy chỉnh. tôi sẽ kiểm tra và cập nhật nó ở đây :) –

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