我有一个包含编辑文字的活动我希望在手机号码前添加+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);
答案 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)
您可以使用“国家/地区代码库”来让用户自由选择他们的国家/地区,它还有一些方法可以自动选择您当前的国家/地区,并且国家/地区代码将直接基于该国家/地区进行分配,因此用户不必选择他们的国家。
看看这个国家/地区代码选择器库->
答案 3 :(得分:0)
使用材料组件库中提供的for...
,您可以使用属性: TextInputLayout
app:prefixText="+91"