android 基礎知識 七

Android EditText截獲與監聽輸入事件
預期目標:如下圖,輸入框中每輸入一個字符,下面的TextView可以迅速的顯示出來輸入框中的內容。

20110929092534.jpg (4.97 KB, 下載次數: 0)

下載附件  保存到相冊

2012-10-16 14:36 上傳




1.第一種方法:使用setOnKeyListener(),不過這種方式只能監聽硬鍵盤事件。

  1. edittext.setOnKeyListener(new View.OnKeyListener() {
  2.     @Override
  3.     public boolean onKey(View v, int keyCode, KeyEvent event) {
  4.         textview.setText(edittext.getText());
  5.         return false;
  6.     }
  7. });
複製代碼
2.第二種方法:使用TextWatcher類,這種方式是可以監聽軟鍵盤和硬鍵盤的,我們只需要實現onTextChanged方法即可,另外TextWatcher還提供了beforeTextChangedafterTextChanged方法,用於更加詳細的輸入監聽處理。

  1. edittext.addTextChangedListener(new TextWatcher() {            
  2.     @Override
  3.     public void onTextChanged(CharSequence s, int start, int before, int count) {
  4.         textview.setText(edittext.getText());
  5.     }
  6.       
  7.     @Override
  8.         public void beforeTextChanged(CharSequence s, int start, int count, int after) {
  9.     }
  10.       
  11.     @Override
  12.         public void afterTextChanged(Editable s) {
  13.     }
  14. });
複製代碼
3、代碼片段:實現當輸入到最大值時則不允許再輸入了,另外,由於EditText並沒有提供給我們EditText的禁止輸入功能,以下方法也實現了此功能。

  1. private void setEditable(EditText mEdit, int maxLength, boolean value) {
  2.     if (value) {
  3.         mEdit.setFilters(new InputFilter[] { new MyEditFilter(maxLength) });
  4.         mEdit.setCursorVisible(true);
  5.         mEdit.setFocusableInTouchMode(true);
  6.         mEdit.requestFocus();   
  7.     }
  8.     else {
  9.         mEdit.setFilters(new InputFilter[] { new InputFilter() {
  10.             @Override
  11.             public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
  12.                 return source.length() < 1 ? dest.subSequence(dstart, dend) : "";
  13.             }
  14.         } });
  15.         mEdit.setCursorVisible(false);
  16.         mEdit.setFocusableInTouchMode(false);
  17.         mEdit.clearFocus();
  18.     }
  19. }
複製代碼
-------------------------------------------------------------------------------------------------
Android獲取文字的寬度

  1. Paint mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
  2. mTextPaint.setColor(Color.WHITE);
  3.   
  4. // Define the string.
  5. String displayText = "Hello World!";
  6.   
  7. // Measure the width of the text string.
  8. float textWidth = mTextPaint.measureText(displayText);
複製代碼
---------------------------------------------------------------------------------------
android ArrayAdapter的使用
寫一個XML用於顯示ListView。
list1.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <TextView xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:id="@+id/checklv1"
  4.     android:layout_width="fill_parent"
  5.     android:layout_height="fill_parent"
  6.     />
複製代碼
在主程序裏定義一個

  1. private String[] array1= {"aaa", "bbb", "ccc", "ddd"};
複製代碼
然後調用

  1. private ListView lv1;
  2. lv1 = (ListView) findViewById(R.id.lv1);
  3. ArrayAdapter adapter1=new ArrayAdapter (showinfo.this,R.layout.list1,array1);
  4. lv1.setAdapter(adapter1);
複製代碼
lv1爲在界面裏的一個ListView的widget。
----------------------------------------------------------------------------------------------
Android TextView無焦點滾動顯示第一種:

  1. Animation ani = new TranslateAnimation(310f, -400f, 0.0f, 0.0f);
  2. ani.setDuration(10000);
  3. ani.setRepeatCount(500);
  4. ani.setRepeatMode(1);
  5. TextView textView =(TextView) this.findViewById(R.id.text);
  6. textView .startAnimation(ani);
複製代碼
第二種:

  1. <TextView
  2.     android:id="@+id/TextView02"
  3.     android:singleLine="true"
  4.     android:scrollHorizontally="true"
  5.     android:ellipsize="marquee"
  6.     android:marqueeRepeatLimit="marquee_forever"
  7.     android:textSize="16px"
  8.     android:focusable="true"
  9.     android:textColor="@color/gray"
  10.     android:layout_width="wrap_content"
  11.     android:layout_height="wrap_content"
  12.     />
複製代碼
第二種代碼:

  1. nextsong = (TextView) findViewById(R.id.TextView02);
  2. nextsong.setSelected(true);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章