package com.jdroid.android.view; import android.Manifest; import android.content.Context; import android.graphics.Rect; import android.support.annotation.RequiresPermission; import android.text.InputType; import android.util.AttributeSet; import android.view.View; import android.view.inputmethod.EditorInfo; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import com.jdroid.android.utils.AndroidUtils; public class EmailAutoCompleteTextView extends AutoCompleteTextView { @RequiresPermission(Manifest.permission.GET_ACCOUNTS) public EmailAutoCompleteTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } @RequiresPermission(Manifest.permission.GET_ACCOUNTS) public EmailAutoCompleteTextView(Context context, AttributeSet attrs) { super(context, attrs); init(); } @RequiresPermission(Manifest.permission.GET_ACCOUNTS) public EmailAutoCompleteTextView(Context context) { super(context); init(); } @RequiresPermission(Manifest.permission.GET_ACCOUNTS) private void init() { if (!isInEditMode()) { ArrayAdapter<String> adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_dropdown_item_1line, AndroidUtils.getAccountsEmails()); setAdapter(adapter); setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS); setImeOptions(EditorInfo.IME_ACTION_NEXT); } } @Override public boolean enoughToFilter() { return true; } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { super.onFocusChanged(focused, direction, previouslyFocusedRect); if ((getWindowVisibility() != View.GONE) && focused) { performFiltering(getText(), 0); showDropDown(); } } }