如何在android中的编辑文本中添加移动号码之前的+91?

时间:2016-06-28 11:33:05

标签: android

我有一个包含编辑文字的活动我希望在手机号码前添加+91,现在的问题是当我开始输入手机号码时如9888888 当我输入9 + 91是可见的,之后是888888.It第一次跳过9 ...我该如何解决这个问题。

代码: -

TextWatcher m_MobileWatcher = 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) {
        if (!s.toString().contains("+91")) {
            m_InputMobie.setText("+91");
            Selection.setSelection(m_InputMobie.getText(), m_InputMobie.getText().length());
        }
    }
};
m_InputMobie = (EditText) m_Main.findViewById(R.id.input_Number);
    m_InputMobie.addTextChangedListener(m_MobileWatcher);

4 个答案:

答案 0 :(得分:1)

在这里,尝试对activity.xml文件进行一些更改。

<FrameLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="520dp">

            <EditText
                android:id="@+id/mobile_no"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:hint="0000000000"
                android:inputType="phone"
                android:maxLength="10"
                android:textColor="@color/black"
                android:textStyle="bold"
                android:textSize="18sp"
                android:paddingBottom="8dp"
                android:paddingStart="48dp"
                android:paddingEnd="8dp"
                android:paddingTop="8dp" >
                <requestFocus />
            </EditText>

            <TextView
                android:id="@+id/prefix"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:paddingStart="8dp"
                android:textColor="@color/black"
                android:textStyle="bold"
                android:textSize="18sp"
                android:text="+91" />
        </FrameLayout>

结果看起来像这样:-https://i.stack.imgur.com/2guni.png

哦!是!无需任何其他编码。

答案 1 :(得分:0)

你错过了这一行  m_InputMobie.setText(“+ 91”+ s.toString());

您必须将用户键入的字符添加到编辑文本文本中。

TextWatcher m_MobileWatcher = 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) {
                if (!s.toString().contains("+91")) {
                    m_InputMobie.setText("+91" + s.toString());
                    Selection.setSelection(m_InputMobie.getText(), m_InputMobie.getText().length());
                }
            }
        };
m_InputMobie = (EditText) m_Main.findViewById(R.id.input_Number);
        m_InputMobie.addTextChangedListener(m_MobileWatcher);

答案 2 :(得分:0)

您可以使用“国家/地区代码库”来让用户自由选择他们的国家/地区,它还有一些方法可以自动选择您当前的国家/地区,并且国家/地区代码将直接基于该国家/地区进行分配,因此用户不必选择他们的国家。

看看这个国家/地区代码选择器库->

Country code picker Library

答案 3 :(得分:0)

使用材料组件库中提供的for...,您可以使用属性: TextInputLayout

app:prefixText="+91"