編輯:關於Android編程
一、實現監聽文本框字數,提示還能輸入多少個字符
package chay.mian; import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { private EditText editText; private TextView tip; private final int charMaxNum = 10; // 允許輸入的字數 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { editText = (EditText) findViewById(R.id.main_et); editText.addTextChangedListener(new EditChangedListener()); tip = (TextView) findViewById(R.id.main_tv); tip.setText(0/+charMaxNum); } class EditChangedListener implements TextWatcher { private CharSequence temp; // 監聽前的文本 private int editStart; // 光標開始位置 private int editEnd; // 光標結束位置 // 輸入文本之前的狀態 @Override public void beforeTextChanged(CharSequence s, int start, int count,int after) { temp = s; } // 輸入文字中的狀態,count是一次性輸入字符數 @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // if (charMaxNum - s.length() <= 5) { // tip.setText(還能輸入 + (charMaxNum - s.length()) + 字符); // } tip.setText((s.length()) + / + charMaxNum); } // 輸入文字後的狀態 @Override public void afterTextChanged(Editable s) { /** 得到光標開始和結束位置 ,超過最大數後記錄剛超出的數字索引進行控制 */ editStart = editText.getSelectionStart(); editEnd = editText.getSelectionEnd(); if (temp.length() > charMaxNum) { // Toast.makeText(getApplicationContext(), 最多輸入10個字符, Toast.LENGTH_SHORT).show(); s.delete(editStart - 1, editEnd); editText.setText(s); editText.setSelection(s.length()); } } }; }
二、數據類型檢驗,當輸入不是整型數字的時候,會立刻彈出輸入框,提示改正
MainActivity:
package chay.mian; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { private EditText editText; private TextView tip; String str; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mian); init(); } private void init() { editText = (EditText) findViewById(R.id.mian_et); editText.addTextChangedListener(new EditChangedListener()); tip = (TextView) findViewById(R.id.mian_tv); tip.setText(請輸入整型數字); } class EditChangedListener implements TextWatcher { // 輸入文本之前的狀態 @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { Log.d(TAG, beforeTextChanged--------------->); } // 輸入文字中的狀態,count是一次性輸入字符數 @Override public void onTextChanged(CharSequence s, int start, int before, int count) { Log.d(TAG, onTextChanged--------------->); } // 輸入文字後的狀態 @Override public void afterTextChanged(Editable s) { Log.d(TAG, afterTextChanged--------------->); str = editText.getText().toString(); try { // if ((editText.getText().toString()) != null) Integer.parseInt(str); } catch (Exception e) { showDialog(); } } }; private void showDialog() { AlertDialog dialog; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(消息).setIcon(android.R.drawable.stat_notify_error); builder.setMessage(你輸出的整型數字有誤,請改正); builder.setPositiveButton(確定, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }); dialog = builder.create(); dialog.show(); } }
在LogCat查看調用這些方法的順序:
beforeTextChanged-->onTextChanged-->onTextChanged
前言:因為找了N多網上的資源都沒有好的解決方案,別人都是只給思路沒給具體源碼,真TMD糾結,干嘛求別人,自己動手才是真,最痛恨那些所謂大牛的作風,給了點點代碼就讓別人去想
在上一篇文章中我們結合實驗講解了有關使用BroadcastReceiver存在的安全性問題並且給出了相應的解決方案,最後一條的解決方案是采用官方v4包中的LocalBro
如果你想在你的Android程序中自動打印MainActivity.onCreate(line:37)這種類名.方法名(行數)的日志該如何實現呢? 1.引入Java的線程
關於下拉刷新的實現原理我在上篇文章Android自定義控件之仿美團下拉刷新中已經詳細介紹過了,這篇文章主要介紹表盤的動畫實現原理汽車之家的下拉刷新分為三個狀態:第一個狀態