1. 程式人生 > >Android實現登入郵箱的自動補全功能

Android實現登入郵箱的自動補全功能

先看下效果圖:


只要輸入到@符,就會開始聯想郵箱,樣式可以自己定義。

下面看下主要的程式碼:

//這個就是我們繼承自MultiAutoCompleteTextView實現我們自定義的郵箱聯想元件

public class MailBoxAssociateView extends android.support.v7.widget.AppCompatMultiAutoCompleteTextView {
    public MailBoxAssociateView(Context context) {
        super(context);
    }

    public MailBoxAssociateView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MailBoxAssociateView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public boolean enoughToFilter() {
        // 如果字元中包含'@'並且不在第一位,則滿足條件
        return getText().toString().contains("@") && getText().toString().indexOf("@") > 0;
    }
}

指定從哪個地方開始聯想

public class MailBoxAssociateTokenizer implements MultiAutoCompleteTextView.Tokenizer {

    @Override
    public int findTokenEnd(CharSequence text, int cursor) {
        int i = cursor;
        int len = text.length();
        while (i < len) {
            if (text.charAt(i) == '@') {
                return i;
            } else {
                i++;
            }
        }
        return len;
    }

    @Override
    public int findTokenStart(CharSequence text, int cursor) {
        int index = text.toString().indexOf("@");

        if (index < 0) {
            index = text.length();
        }
        if (index >= findTokenEnd(text, cursor)) {
            index = 0;
        }
        return index;
    }

    @Override
    public CharSequence terminateToken(CharSequence text) {
        int i = text.length();

        while (i > 0 && text.charAt(i - 1) == ' ') {
            i--;
        }

        if (i > 0 && text.charAt(i - 1) == '@') {
            return text;
        } else {
            if (text instanceof Spanned) {
                SpannableString sp = new SpannableString(text);
                TextUtils.copySpansFrom((Spanned) text, 0, text.length(), Object.class, sp, 0);
                return sp;
            } else {
                return text;
            }
        }
    }

}
佈局檔案,這裡面的顏色都可以根據自己的需要自行調整
<fashion.test.com.email.MailBoxAssociateView
    android:id="@+id/imageviewedittextone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="25dp"
    android:layout_marginRight="25dp"
    android:layout_marginTop="67dp"
    android:hint="地址"
    android:paddingLeft="5dp"
    android:popupBackground="@android:color/darker_gray"
    android:singleLine="true"
    android:textColor="@android:color/black"
    android:textColorHint="@android:color/holo_blue_bright"
    android:textSize="16sp" />

主程式碼

public class MainActivity extends AppCompatActivity {

    MailBoxAssociateView view;
    private String[] email_sufixs = new String[]{"@qq.com", "@163.com", "@126.com", "@gmail.com", "@sina.com", "@hotmail.com",
            "@yahoo.cn", "@sohu.com", "@foxmail.com", "@139.com", "@yeah.net", "@vip.qq.com", "@vip.sina.com"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        view = findViewById(R.id.imageviewedittextone);
        MailBoxAssociateTokenizer mailBoxAssociateTokenizer = new MailBoxAssociateTokenizer();
        ArrayAdapter<String> adapter = new ArrayAdapter(this,
                android.R.layout.simple_dropdown_item_1line, email_sufixs);
        view.setAdapter(adapter);
        view.setTokenizer(mailBoxAssociateTokenizer);


    }
}

相關推薦

Android實現登入郵箱自動功能

先看下效果圖: 只要輸入到@符,就會開始聯想郵箱,樣式可以自己定義。 下面看下主要的程式碼: //這個就是我們繼承自MultiAutoCompleteTextView實現我們自定義的郵箱聯想元件 public class MailBoxAssociateView

第三百六十八節,Python分布式爬蟲打造搜索引擎Scrapy精講—elasticsearch(搜索引擎)用Django實現搜索的自動功能

技術 django 分布 全功能 -s col ron 搜索 創建 第三百六十八節,Python分布式爬蟲打造搜索引擎Scrapy精講—用Django實現搜索的自動補全功能 elasticsearch(搜索引擎)提供了自動補全接口 官方說明:https://www

jupyter notebook自動功能實現

Jupyter notebook使用預設的自動補全是關掉的。要開啟自動補全,需修改預設配置。   命令列中輸入:ipython profile create 以上命令會在~/.ipython/profile_default/目錄下生成ipython_config.py和ipython_kern

Ajax實現搜尋引擎自動功能

上程式碼: 搜素框 Search <input type="text" name="name" class="inputtable" id="name" />

Jquery實現自動功能

今天因為公司全去搞活動了,所以在網上看了一會兒jquery,在這裡詳細介紹一下基於jquery的autoComplete的實現。 首先,向大家看下自己實現的最簡單的結果: ![簡單效果](https://img-blog.csdn.net/201

【輸入智慧提示功能】PHP+jQuery實現自動功能

前面手工寫了一個下拉自動補全功能,寫的簡單,只實現了滑鼠選擇的功能,不支援鍵盤選擇。由於專案很多地方要用到這個功能,所以需要用心做一下。發現select2這個外掛的功能可以滿足當前需求。 在使用jquery外掛select2的過程中遇到了一些疑惑,無論是穿json資料還

開啟mac terminal 命令/路徑自動功能

terminal 自動 menu 技術分享 bsp con 命令行 win big 用慣了windows命令行工具的按Tab自動補全路徑功能後,在mac terminal上敲命令很不習慣。其實mac terminal也有這個功能。 在命令行輸入nano .inputrc

使用百度地圖實現詳細地址自動

默認 tro int() div inner 使用 wid type 實現 <!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scal

使用百度地圖實現詳細地址自動(bug''事件只能綁定到一個上的問題')

item 頁面 tid col border nconf complete ane result     loadMapAutocomplete("suggestId","searchResultPanel"); loadMapAutocomplete("suggest

pycharm代碼自動功能

har hit png parent bnl padding ans charm orm pycharm具有代碼自動補全的功能。無意中將其功能關閉,百度了好久才解決掉,所以把這次失誤記錄下來。那麽我們怎麽打開呢?在軟件的左上角找到File-》Power Save Mode,

【easyui-combobox】下拉菜單自動功能,Ajax獲取遠程數據源

combo -c -o efi 字段 data app script resp 這個是針對easyUI的下拉菜單使用的,Ajax獲取遠程數據源 HTML 頁面 <input id="uname" name="uname" class="easyui-combo

Mac上git自動功能

怎麽 pro 執行 發現 文件中 -o 命名 重啟 vpd 在Mac上安裝了git之後,發現命令不能自動補全,使用起來非常不方便,本文介紹怎麽讓git命令能夠自動補全。 確保bash能夠自動補全在終端(本文使用的是OS X的終端)執行如下命令: brew list 看看是否

jquery的輸入框自動功能+ajax

image -- spa 數據 adding box utf 分類 .com jquery的輸入框自動補全功能+ajax 2017年05月10日 18:51:39 辣姐什麽鬼 閱讀數:1461 標簽: web前端 更多 個人分類: web前端

Eclipse自動功能輕松設置

自動提示 net img ces 自動補全 會有 tails trigger csdn Eclipse自動補全功能輕松設置 1.打開Eclipse->Window->Perferences 2.找到Java下的Editor下的Content Assist,右邊

eclipse自動功能的缺陷

  這周在做一些程式碼的重構,在重構的過程中,踩了一個eclipse的大坑!這裡記錄一下   在eclipse裡寫java程式碼,你寫好方法名字,再來個回車,eclipse會自動幫你把方法的引數給補全,補全的引數跟你在補全方法定義的引數名字“一致”,即我認為的效果是這樣的 p

kubectl命令自動功能

share -o ffffff img water process 避免 shadow 命令補全 我們在管理k8s集群的時候,避免不了使用kubectl命令工具,但是該命令還是挺復雜的,使用中也記不住那麽多的api選項,故這裏介紹一下kubectl命令補全工具的安裝。 1:

在eclipse中設定編碼自動功能

如果你用過Visual Studio的自動補全功能後,再來用eclipse的自動補全功能,相信大家會有些許失望。 但是eclipse其實是非常強大的,eclipse的自動補全沒有VS那麼好是因為eclipse的補全功能用的是預設設定。你只需要稍微修改一下就行了。 最簡單的修改方式是:Wi

微信小程式搜尋框自動功能

▶動態效果圖◀   ▶效果涉及到的input屬性◀ focus     Boolean     false     獲取焦點      bindinput &nb

PySide QLineEdit自動功能

#-*- coding:utf-8 -*- from PySide.QtGui import * from PySide.QtCore import * import math import sys import re import os impor

Ajax+Json實現百度自動

search.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath();