iT邦幫忙

2024 iThome 鐵人賽

DAY 9
0

AutoCompleteTextView 作用

AutoCompleteTextView是EditText引申出的進階元件,當使用者輸入資料到一半時,跳出資料庫裡,符合使用者輸入內容的資料,

如何創建

image

屬性介紹

android:completionThreshold="1"=設定使用者輸入的內容到第幾個時,顯示跟內容一樣的選單選項,預設是1
android:dropDownHeight=設定下拉選單的高
android:dropDownWidth=設定下拉選單的寬
android:popupBackground="@color/blue"=設定下拉選單的背景顏色

activity 設定

先建立一個簡單的字串集合
String[] data = {"Apple", "Banana", "Cherry", "Date","Grapes", "Orange", "Pineapple", "Strawberry"};
這裡使用是最簡單的方法調用android內建的陣列字串的adapter

ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_dropdown_item_1line, data);
autoCompleteTextView.setAdapter(adapter);

如果基礎的AutoCompleteTextView到這裡就結束了、w、
是不是很簡單呢!

特殊設定

simple_dropdown_item_1line是預設的選單選項輸出畫面我們之前只能更改選單畫面的背ㄉㄧㄥ顏色,但當我們需要更改選單文字顏色時,會非常困難,我們需要先新增一個自定義的Adapterimage
程式碼我就丟在這不做贅述
image

public class MainTextViewArrayAdapter extends ArrayAdapter<String> {

    public MainTextViewArrayAdapter(@NonNull Context context, int resource, @NonNull String[] objects) {
        super(context, resource, objects);
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        View view = super.getView(position, convertView, parent);
        TextView textView = view.findViewById(android.R.id.text1);
        textView.setTextColor(getContext().getResources().getColor(android.R.color.white));  // 設定文字顏色
        return view;
    }

    @Override
    public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        View view = super.getDropDownView(position, convertView, parent);
        TextView textView = view.findViewById(android.R.id.text1);
        textView.setTextColor(getContext().getResources().getColor(android.R.color.white));  // 設定文字顏色
        return view;
    }
}

最後在Activity改用我們的自訂adapter
image
image


上一篇
[day08]EditText
下一篇
[day10]Button
系列文
深入Android 物件的認識與應用實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言