2010-08-31 22 views
16

Tôi hiện đang triển khai trường tự động hoàn tất bằng cách sử dụng thành phần AutocompleteTextView.AutocompleteTextview và CompletionHintView

Tôi đang cố gắng thêm gợi ý hoàn thành với số lượng kết quả và chỉ muốn tạo kiểu khác với phần tử danh sách thả xuống. Có một thuộc tính có tên là completionHintView trên thành phần, nhưng mỗi khi tôi cung cấp cho bố cục đó, trước đây tôi đã xác định bố cục đó sẽ ném một NullPointerException.

Có ai có ví dụ làm việc về cách tạo kiểu gợi ý hoàn thành không?

+0

Dường như không ai có ví dụ :) Muốn hiển thị một số mã để có thể chúng tôi có thể làm việc thông qua nó và xem có gì sai? –

Trả lời

5

Bạn có thể giải thích về loại kiểu dáng bạn đang tìm cách áp dụng không?

Nếu đó chỉ là kiểu văn bản cơ bản, bạn có thể tạo Spannable và đặt gợi ý hoàn thành với kết quả, vì nó chấp nhận CharSequence. Ví dụ về cách tạo Spannable và áp dụng kiểu cho nó được minh họa trong this post.

Nếu bạn đang tìm cách thực sự thao tác các thông số của TextView (ví dụ: đệm), thì source code của AutoCompleteTextView dường như cung cấp gợi ý (ý định chơi chữ).

private View getHintView(Context context) { 
    if (mHintText != null && mHintText.length() > 0) { 
     final TextView hintView = (TextView) LayoutInflater.from(context).inflate(
       mHintResource, null).findViewById(com.android.internal.R.id.text1); 
     hintView.setText(mHintText); 
     hintView.setId(HINT_VIEW_ID); 
     return hintView; 
    } else { 
     return null; 
    } 
} 

Điều này cho thấy Android tìm kiếm id text1 trong tham chiếu tài nguyên bạn chỉ định. Phiên bản cơ bản nhất của một tài nguyên như vậy sẽ chứa gì, nhưng một TextView với id này:

<?xml version="1.0" encoding="utf-8"?> 
    <TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@android:id/text1" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:padding="10dp" 
     android:textColor="#FF0000" android:textSize="16sp" /> 

Save trên trong một file layout (ví dụ completion_hint_view.xml) và tham khảo nó như sau từ bạn AutoCompleteTextView:

<AutoCompleteTextView android:id="@+id/autocomplete_textview" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:completionHintView="@layout/completion_hint_view"/> 

Tùy chọn thứ hai này có lẽ là dễ sử dụng nhất và sẽ cho phép bạn truy cập đầy đủ vào các tham số của TextView. Nếu bạn cần áp dụng nhiều kiểu cho văn bản trong chế độ xem này, bạn có thể kết hợp đề xuất đầu tiên, vì điều đó sẽ giúp bạn linh hoạt hơn.

Nếu cả hai đề xuất này đều không đủ, tôi có thể nghĩ về một số công việc ít thanh lịch hơn có thể cho phép bạn nhận được kết quả tương tự.

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