小說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密碼
- Flutter 密碼輸入框 驗證碼輸入框Flutter密碼
- 小視訊app原始碼,實現簡單的登入介面,輸入賬號密碼APP原始碼密碼
- 影片直播app原始碼,自定義View 線型EditText輸入框APP原始碼View
- input 密碼輸入框如何定位,並且輸入密碼呢?密碼
- 直播app原始碼,登入時自動輸入密碼/自動記住密碼APP原始碼密碼
- 密碼框輸入提示效果程式碼例項密碼
- 小說APP原始碼的圖片載入方式,懶載入和預載入的實現APP原始碼
- app直播原始碼,監聽EditText輸入框內輸入內容的變化APP原始碼
- 直播商城原始碼,密碼輸入框自定義顯示隱藏圖示原始碼密碼
- 直播app系統原始碼,flutter 驗證碼輸入框的簡單封裝APP原始碼Flutter封裝
- 直播app原始碼,Java的輸入輸出APP原始碼Java
- 直播系統原始碼,Vue 禁止輸入框輸入空格原始碼Vue
- JS輸入框郵箱自動提示(帶有demo和原始碼)JS原始碼
- 如何在相親交友原始碼中實現正方形驗證碼輸入框?原始碼
- 劃詞高亮功能的實現附帶開原始碼原始碼
- app直播原始碼,平臺登入頁面實現和修改密碼頁面實現APP原始碼密碼
- 相容所有瀏覽器的密碼框輸入提示效果瀏覽器密碼
- Qt 實現文字輸入框,帶字數限制QT
- 直播app原始碼,輸入密碼和使用者名稱呼叫開發者工具APP原始碼密碼
- 輸入密碼連線過程log密碼
- 短視訊直播原始碼,EditText輸入框的使用原始碼
- 影片直播系統原始碼,EditText輸入框的使用原始碼
- ReactNative仿支付寶付款密碼輸入框React密碼
- 實現一個帶浮動標籤的輸入框
- 微信小程式6位或多位驗證碼/密碼輸入框微信小程式密碼
- app直播原始碼,Node.js實現密碼雜湊加密APP原始碼Node.js密碼加密
- Web 端 實現 app “輸入驗證碼 ”的效果WebAPP
- 實現文字框輸入內容提示程式碼例項
- Element原始碼分析系列5-Input(輸入框)原始碼
- 在程式前加一個密碼輸入框的過程!密碼
- 一對一視訊原始碼,登入時輸入密碼時的顯示密碼按鈕原始碼密碼
- 聊天室軟體原始碼中封裝一個金額輸入框元件的實現原始碼封裝元件
- 短影片app原始碼,Android TextView文字,刪除線以及下劃線APP原始碼AndroidTextView
- HTML在透明輸入框裡新增圖示的實現程式碼HTML
- Linux下Terminal的密碼輸入(轉)Linux密碼
- iOS開發使用UIKeyInput自定義密碼輸入框iOSUI密碼
- vue自定義密碼輸入框解決瀏覽器自動填充密碼的問題Vue密碼瀏覽器