2016-02-10 2 views
4

Мне нужно разрешить пользователю вводить номер телефона после +, я как добавить это '+' в edit text.User не может редактировать +. Пользователь может ввести число, за которым следует +. Используя editText.setText("+");, он все равно позволит пользователю редактировать это +. Как сделать этот текст недоступным для редактирования.Как сделать префикс редактирования текста не редактируемым

+0

Что вы пробовали? –

+0

@ ρяσѕρєяK Я попытался использовать etPhone.setText («+», TextView.BufferType.EDITABLE); Но это сделает редактируемый текст доступным для редактирования. – Archana

ответ

4

Пользовательский EditText с вашим классом.

найти приведенный ниже код примера для справки.

public class CustomEdit extends EditText { 

    private String mPrefix = "+"; // can be hardcoded for demo purposes 
    private Rect mPrefixRect = new Rect(); // actual prefix size 

    public CustomEdit(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     getPaint().getTextBounds(mPrefix, 0, mPrefix.length(), mPrefixRect); 
     mPrefixRect.right += getPaint().measureText(" "); // add some offset 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     canvas.drawText(mPrefix, super.getCompoundPaddingLeft(), getBaseline(), getPaint()); 
    } 

    @Override 
    public int getCompoundPaddingLeft() { 
     return super.getCompoundPaddingLeft() + mPrefixRect.width(); 
    } 
} 

В XML использовать как ниже

<com.example.CustomEdit 
      android:id="@+id/edt_no" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:textColor="@color/edit_gray" 
      android:textSize="@dimen/text_14sp" 
      android:inputType="number" 
      android:maxLength="10" 
      > 
+0

Есть ли способ сделать это в XML-файле? – Archana

+0

Вы можете добавить этот CustomTextText в свой xml и установить данные, что вы хотите –

0

Использование TextWatcher вы можете сделать это возможным. В TextWatcher вы можете обрабатывать редактируемое текстовое значение. смотрите этот Tutorial

0

Это должно быть, как это

final EditText edt = (EditText) findViewById(R.id.editText1); 

     edt.setText("+"); 
     Selection.setSelection(edt.getText(), edt.getText().length()); 


     edt.addTextChangedListener(new TextWatcher() { 

       @Override 
       public void onTextChanged(CharSequence s, int start, int before, int count) { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void beforeTextChanged(CharSequence s, int start, int count, 
         int after) { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void afterTextChanged(Editable s) { 
        if(!s.toString().contains("+")){ 
         edt.setText("+"); 
         Selection.setSelection(edt.getText(), edt.getText().length()); 

        } 

       } 
      }); 
Смежные вопросы