gpt4 book ai didi

java - 当编辑文本最大长度达到限制时自动隐藏键盘

转载 作者:行者123 更新时间:2023-12-01 16:17:26 34 4
gpt4 key购买 nike

我正在创建用户界面,用户必须在 EditText 中输入手机号码。该 EditText 的 maxLength 是 10。现在我希望当用户输入 10 位数字时键盘自动隐藏。如何实现这一点。我已经在谷歌上搜索过,但没有一个代码适合我。下面是我的 XML 和 fragment 代码。

XML 代码

<EditText
android:id="@+id/editTextPhone"
style="@style/EditText"
android:background="@drawable/border_design"
android:inputType="phone"
android:hint="@string/editText_phone_hint"
android:maxLength="10"
android:drawableLeft="@drawable/phone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

fragment 代码

    public class MobileNumberFragment extends Fragment {

String mobileNumber;

editTextNumber = (EditText) view.findViewById(R.id.editTextPhone);


protected boolean isValidNumber(String registerMobileNumber) {
if (registerMobileNumber != null && registerMobileNumber.length() == 10) {
return true;
}
return false;
}
private void SendOtp() {
mobileNumber = editTextNumber.getText().toString().trim();
if (!isValidNumber(mobileNumber)) //Condition so that no edit-text will remain empty
{
editTextNumber.setError("Enter the Valid Mobile Number");
editTextNumber.requestFocus();
return;

} else {
buttonSendOtp.setText("Processing...");
}

}

最佳答案

您可以使用 InputMethodManager 强制 Android 隐藏虚拟键盘,调用hideSoftInputFromWindow ,传入包含焦点 View 的窗口的 token 。

//检查是否没有 View 获得焦点:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

txtName = (EditText)findViewById(R.id.txtName);
txtName.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) {
if(s.toString().length() == 10){
HideKeyboardFormUser();
}
}
});
}

public void HideKeyboardFormUser(){
View view = getCurrentFocus();
InputMethodManager hideKeyboard = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
hideKeyboard.hideSoftInputFromWindow( view.getWindowToken(), 0);
}

}

这将强制键盘在所有情况下都隐藏。在某些情况下,您需要传入 InputMethodManager.HIDE_IMPLICIT_ONLY 作为第二个参数,以确保仅在用户未明确强制键盘显示(通过按住菜单)时隐藏键盘。

关于java - 当编辑文本最大长度达到限制时自动隐藏键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62365282/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com