2016-08-18 39 views
0

我有一個editText它將接受來自用戶的電話號碼。我的目標是一旦用戶輸入電話號碼,它應該格式化爲「X-XXX-XXX-XXX」,一旦用戶長時間按下它將打開撥號程序。 我在谷歌搜索,但通過使用此代碼找到像XXX-XXX-XXX的格式。Android中的電話號碼格式。 (X-XXX-XXX-XX)

PhoneNumberUtils.formatNumber(字符串)

我怎麼能實現我的願望輸出?

+0

如果是添加一個字符串,只需循環在字符串上添加'-'字符,在第1個第4和第7個字符之後...(向後開始) –

+0

是用戶輸入的數字總是恆定的長度嗎?此外,您是否嘗試將電話號碼格式化爲任何特定國家/地區的格式? –

+0

添加'TextWatcher' –

回答

0

在XML文件中添加EDITTEXT這樣

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="number" 
     android:maxLength="13" 
     android:id="@+id/edit"/> 
</LinearLayout> 

在你的活動設置textchange聽者和關鍵的變化聽者您EDITTEXT

public class MainActivity extends AppCompatActivity { 
    EditText editor; 
    boolean isDeletePressed; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     //X-XXX-XXX-XXX 
     editor= (EditText) findViewById(R.id.edit); 
     editor.addTextChangedListener(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) { 
      String text=s.toString(); 
       if(text.length()==1) { 
        if(!isDeletePressed) { 
         editor.setText(editor.getText().toString() + "-"); 
         editor.setSelection(editor.getText().toString().length()); 
        } 
       }else if(text.length()==2){ 
        if(!(text.charAt(1)=='-')){ 
         editor.setText(editor.getText().toString().substring(0,1)+"-"+editor.getText().toString().substring(1)); 
         editor.setSelection(editor.getText().toString().length()); 
        } 
       }else if(text.length()==5){ 
        if(!isDeletePressed) { 
         editor.setText(editor.getText().toString() + "-"); 
         editor.setSelection(editor.getText().toString().length()); 
        } 
       }else if(text.length()==6){ 
        if(!(text.charAt(5)=='-')){ 
         editor.setText(editor.getText().toString().substring(0,5)+"-"+editor.getText().toString().substring(5)); 
         editor.setSelection(editor.getText().toString().length()); 
        } 
       }else if(text.length()==9){ 
        if(!isDeletePressed) { 
         editor.setText(editor.getText().toString() + "-"); 
         editor.setSelection(editor.getText().toString().length()); 
        } 
       }else if(text.length()==10){ 
        if(!(text.charAt(9)=='-')){ 
         editor.setText(editor.getText().toString().substring(0,9)+"-"+editor.getText().toString().substring(9)); 
         editor.setSelection(editor.getText().toString().length()); 
        } 
       } 
      } 
     }); 
     editor.setOnKeyListener(new View.OnKeyListener() { 
      @Override 
      public boolean onKey(View view, int i, KeyEvent keyEvent) { 
       isDeletePressed = (i == KeyEvent.KEYCODE_DEL); 
       return false; 
      } 
     }); 
    } 
} 
+0

謝謝這麼多。有用。 – fmashkoor