麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統 > Android > 正文

Android中多個EditText輸入效果的解決方式

2019-10-21 21:26:00
字體:
來源:轉載
供稿:網友

前言

在開發中,我們常常遇到這種情況

Android,EditText,輸入效果

我們往往需要的是下面這種效果

Android,EditText,輸入效果

但是如果把這些實現的代碼寫在Activity中會比較麻煩,影響代碼美觀

解決方法

于是就有了下面這個輔助類,禁用了按鈕的點擊事件和按鈕的漸變色,可同時添加一個或者多個EditText

/** * 文本輸入輔助類,通過管理多個TextView或者EditText輸入是否為空來啟用或者禁用按鈕的點擊事件 */public final class TextInputHelper implements TextWatcher { private View mMainView;//操作按鈕的View private List<TextView> mViewSet;//TextView集合,子類也可以(EditText、TextView、Button) private boolean isAlpha;//是否設置透明度 public TextInputHelper(View view) {  this(view, true); } /**  * 構造函數  *  * @param view    跟隨EditText或者TextView輸入為空來判斷啟動或者禁用這個View  * @param alpha    是否需要設置透明度  */ public TextInputHelper(View view, boolean alpha) {  if (view == null) throw new IllegalArgumentException("The view is empty");  mMainView = view;  isAlpha = alpha; } /**  * 添加EditText或者TextView監聽  *  * @param views  傳入單個或者多個EditText或者TextView對象  */ public void addViews(TextView... views) {  if (views == null) return;  if (mViewSet == null) {   mViewSet = new ArrayList<>(views.length - 1);  }  for (TextView view : views) {   view.addTextChangedListener(this);   mViewSet.add(view);  }  afterTextChanged(null); } /**  * 移除EditText監聽,避免內存泄露  */ public void removeViews() {  if (mViewSet == null) return;  for (TextView view : mViewSet) {   view.removeTextChangedListener(this);  }  mViewSet.clear();  mViewSet = null; } // TextWatcher @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) {} @Override public synchronized void afterTextChanged(Editable s) {  if (mViewSet == null) return;  for (TextView view : mViewSet) {   if ("".equals(view.getText().toString())) {    setEnabled(false);    return;   }  }  setEnabled(true); } /**  * 設置View的事件  *  * @param enabled    啟用或者禁用View的事件  */ public void setEnabled(boolean enabled) {  if (enabled == mMainView.isEnabled()) return;  if (enabled) {   //啟用View的事件   mMainView.setEnabled(true);   if (isAlpha) {    //設置不透明    mMainView.setAlpha(1f);   }  }else {   //禁用View的事件   mMainView.setEnabled(false);   if (isAlpha) {    //設置半透明    mMainView.setAlpha(0.5f);   }  } }}

在Activity創建時添加監聽

private TextInputHelper mInputHelper;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //創建一個輔助類,傳入按鈕操作View mInputHelper = new TextInputHelper(mButton); //可添加一個或者多個EditText,當然也可以添加TextView mInputHelper.addViews(mEditText1, mEditText2, mEditText3);}

在Activity銷毀時移除監聽(避免內存泄露)

@Overrideprotected void onDestroy() { super.onDestroy(); //移除引用,避免內存泄露 mInputHelper.removeViews();}

需要注意的是這里不單單只是可以添加EditText,還可以添加TextView,因為EditText是TextView的子類,最后要是覺得好用記得點個贊。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 色人阁导航 | 久久精品亚洲一区 | 永久av在线免费观看 | 丁香天堂网| 伊人网站| 欧美va亚洲| 日本看片一区二区三区高清 | 午夜精品成人 | 99日韩精品视频 | 少妇一级淫片免费放正片 | 久久成人精品视频 | 国产一精品一av一免费爽爽 | 欧美黄色看| 亚洲天堂中文字幕在线观看 | 羞羞网站视频 | www日韩大片 | 91福利在线观看 | 少妇一级淫片高潮流水电影 | 亚洲码无人客一区二区三区 | 久久精品一二三区 | 最新中文在线视频 | 久久99国产精品免费网站 | 在线a毛片| av国产免费 | 成年人黄色免费网站 | 91精品国产刺激国语对白 | 激情小说激情图片激情电影 | 色屁屁xxxxⅹ免费视频 | 青草久久久久 | 国产91丝袜在线熟 | av成人在线免费观看 | 免费一级毛片网站 | 国产精品7区 | av电影在线播放 | a视频在线免费观看 | 久久精品亚洲成在人线av网址 | 国产精品免费观在线 | 成人爱爱电影 | 日本高清在线播放 | 日韩在线播放第一页 | 999插插插|