小說APP原始碼,實現帶下劃線的密碼輸入框
小說APP原始碼,實現帶下劃線的密碼輸入框實現的相關程式碼
現在很多app的密碼輸入框,都採用微信、支付寶等密碼輸入框的樣式。還有一種就是每個密碼字元下面帶有一條下劃線的樣式。
仿微信、支付寶網上搜了下有很多demo,但是帶下劃線的不多,或者講的比較複雜,都是自定義什麼的。這兩天正好要做個這樣的東西,研究了一下,感覺沒那麼麻煩,不需要各種自定義。我的思路是:
1). 佈局中定義一個edittext, 全透明,輸入的字元大小為0sp, 這樣使用者就看不見。不能設定為visibility=gone,否則無法獲取焦點,彈 不出輸入法。
2). 然後定義四個textview, 來顯示edittext的輸入。同時定義四個下劃線,分別在每個textview的下方。
3). 監聽edittext的輸入事件,控制每個textview的顯示
1.佈局檔案:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android=" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/input_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="24dp" android:layout_marginTop="24dp" android:text="請輸入密碼" android:textSize="20sp" android:textColor="#333333"/> <EditText android:id="@+id/input_edit" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:inputType="number" android:digits="0123456789" android:maxLength="4" android:maxLines="1" android:background="@null" android:cursorVisible="false" android:textColor="#00000000" android:textSize="0sp" android:visibility="visible"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_below="@+id/input_title" android:layout_marginLeft="24dp" android:layout_marginRight="24dp" android:layout_marginTop="24dp"> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" android:layout_marginRight="45dp" android:paddingBottom="10dp"> <TextView android:id="@+id/edit1" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:inputType="number" android:digits="0123456789" android:maxLength="1" android:maxLines="1" android:background="@null" android:cursorVisible="false" android:textColor="#333333" android:textSize="32sp"/> <TextView android:id="@+id/text1" android:layout_width="match_parent" android:layout_height="1dp" android:background="#767676" android:layout_marginTop="12dp"/> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" android:layout_marginRight="45dp" android:paddingBottom="10dp"> <TextView android:id="@+id/edit2" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:inputType="number" android:digits="0123456789" android:maxLength="1" android:maxLines="1" android:background="@null" android:cursorVisible="false" android:textColor="#333333" android:textSize="32sp"/> <TextView android:id="@+id/text2" android:layout_width="match_parent" android:layout_height="1dp" android:background="#767676" android:layout_marginTop="12dp"/> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" android:layout_marginRight="45dp" android:paddingBottom="10dp"> <TextView android:id="@+id/edit3" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:maxLength="1" android:maxLines="1" android:background="@null" android:cursorVisible="false" android:textColor="#333333" android:textSize="32sp"/> <TextView android:id="@+id/text3" android:layout_width="match_parent" android:layout_height="1dp" android:background="#767676" android:layout_marginTop="12dp"/> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" android:paddingBottom="10dp"> <TextView android:id="@+id/edit4" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:inputType="number" android:digits="0123456789" android:maxLength="1" android:maxLines="1" android:background="@null" android:cursorVisible="false" android:textColor="#333333" android:textSize="32sp"/> <TextView android:id="@+id/text4" android:layout_width="match_parent" android:layout_height="1dp" android:background="#767676" android:layout_marginTop="12dp"/> </LinearLayout> </LinearLayout> </RelativeLayout>
2.實現程式碼
private Dialog inputDialog; private LayoutInflater mInflater; private EditText input_edit; private TextView edit1; private TextView edit2; private TextView edit3; private TextView edit4; private String codeStr = null; private void initInputDialogView(View view) { input_edit = (EditText) view.findViewById(R.id.input_edit); input_edit.addTextChangedListener(mTextWatcher); edit1 = (TextView) view.findViewById(R.id.edit1); edit2 = (TextView) view.findViewById(R.id.edit2); edit3 = (TextView) view.findViewById(R.id.edit3); edit4 = (TextView) view.findViewById(R.id.edit4); edit1.setOnClickListener(onClickListener); edit2.setOnClickListener(onClickListener); edit3.setOnClickListener(onClickListener); edit4.setOnClickListener(onClickListener); } //建立輸入框dialog private void createInputDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); if (mInflater == null) { mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); } View view = mInflater.inflate(R.layout.input_view_layout, null); initInputDialogView(view); builder.setView(view); inputDialog = null; inputDialog = builder.create(); inputDialog.show(); openKeyboard(input_edit); //dialog show之後立即彈出輸入法 } //對四個顯示密碼textview監聽點選事件,這樣做是為了:如果輸入法沒有彈起來,使用者點選密碼框也是可以彈起來的 private View.OnClickListener onClickListener = new View.OnClickListener() { @Override public void onClick(View v) { int vid = v.getId(); switch (vid) { case R.id.edit1: case R.id.edit2: case R.id.edit3: case R.id.edit4: openKeyboard(input_edit); break; } } } //輸入監聽 private TextWatcher mTextWatcher = new 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 void afterTextChanged(Editable s) { /** * 我的處理邏輯是:1. 只能從第一個框輸入;2.只能從最後一次輸入的框刪除 * 3. 如果輸入的密碼個數小於4(我這裡總共4個), 也是可以刪除的。4.按了刪除鍵,還可以繼續接著輸入,保證每一次輸入,顯示的位置都是對的。 **/ int len = s.length(); String str = s.toString(); codeStr = str; switch (len) { case 1: edit1.setText(str); edit2.setText(""); edit3.setText(""); edit4.setText(""); break; case 2: edit2.setText(subStr(str, 1, 2)); edit3.setText(""); edit4.setText(""); break; case 3: edit3.setText(subStr(str, 2, 3)); edit4.setText(""); break; case 4: edit4.setText(subStr(str, 3, 4)); break; default: edit1.setText(""); break; } } }; private String subStr(String s, int start, int end) { if (s == null || s.length() < 1) { return ""; } return s.substring(start, end); } //彈起輸入法 public static void openKeyboard(final EditText view) { view.setFocusableInTouchMode(true); view.setFocusable(true); view.setClickable(true); view.requestFocus(); InputMethodManager inputManager = (InputMethodManager)view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.showSoftInput(view, 0); Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { InputMethodManager inputManager=(InputMethodManager)view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.showSoftInput(view,0); } }, 500); }
3. 最後在合適的地方呼叫createInputDialog()方法就能彈出密碼框,並且同時彈起輸入法。
以上就是 小說APP原始碼,實現帶下劃線的密碼輸入框實現的相關程式碼,更多內容歡迎關注之後的文章
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2844856/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- app直播原始碼,android實現帶下劃線的密碼輸入框APP原始碼Android密碼
- 小視訊app原始碼,實現簡單的登入介面,輸入賬號密碼APP原始碼密碼
- Flutter 密碼輸入框 驗證碼輸入框Flutter密碼
- 影片直播app原始碼,自定義View 線型EditText輸入框APP原始碼View
- input 密碼輸入框如何定位,並且輸入密碼呢?密碼
- 直播app原始碼,登入時自動輸入密碼/自動記住密碼APP原始碼密碼
- app直播原始碼,監聽EditText輸入框內輸入內容的變化APP原始碼
- 微信小程式6位或多位驗證碼/密碼輸入框微信小程式密碼
- 小說APP原始碼的圖片載入方式,懶載入和預載入的實現APP原始碼
- 直播商城原始碼,密碼輸入框自定義顯示隱藏圖示原始碼密碼
- 直播app系統原始碼,flutter 驗證碼輸入框的簡單封裝APP原始碼Flutter封裝
- 直播app原始碼,Java的輸入輸出APP原始碼Java
- app直播原始碼,平臺登入頁面實現和修改密碼頁面實現APP原始碼密碼
- 直播小程式原始碼,react-native自定義文字輸入框原始碼React
- 如何在相親交友原始碼中實現正方形驗證碼輸入框?原始碼
- 直播系統原始碼,Vue 禁止輸入框輸入空格原始碼Vue
- 實現小程直播帶貨app原始碼的紅包傳送功能APP原始碼
- 劃詞高亮功能的實現附帶開原始碼原始碼
- app直播原始碼,Node.js實現密碼雜湊加密APP原始碼Node.js密碼加密
- Web 端 實現 app “輸入驗證碼 ”的效果WebAPP
- iOS開發使用UIKeyInput自定義密碼輸入框iOSUI密碼
- 影片直播系統原始碼,EditText輸入框的使用原始碼
- 短視訊直播原始碼,EditText輸入框的使用原始碼
- 輸入密碼連線過程log密碼
- 寫一個密碼預設星號,但可以檢視密碼的輸入框密碼
- 短影片app原始碼,Android TextView文字,刪除線以及下劃線APP原始碼AndroidTextView
- Qt 實現文字輸入框,帶字數限制QT
- Element原始碼分析系列5-Input(輸入框)原始碼
- 直播app原始碼,輸入密碼和使用者名稱呼叫開發者工具APP原始碼密碼
- 一對一視訊原始碼,登入時輸入密碼時的顯示密碼按鈕原始碼密碼
- appium 怎麼做到小程式輸入密碼APP密碼
- vue自定義密碼輸入框解決瀏覽器自動填充密碼的問題Vue密碼瀏覽器
- HTML在透明輸入框裡新增圖示的實現程式碼HTML
- 聊天室軟體原始碼中封裝一個金額輸入框元件的實現原始碼封裝元件
- 純css實現輸入框placeholder動效及輸入校驗的示例程式碼CSS
- 小視訊原始碼,CSS 實現半透明邊框效果原始碼CSS
- Flutter 驗證碼輸入框Flutter
- SSH配置—Linux下實現免密碼登入Linux密碼