Как установить тип ввода как пароль для edittext программно
Привет всем Я использую диалоговое окно с предупреждением с текстовым редактором. Поэтому я хочу установить тип ввода в качестве пароля для этого текста. Программа много искала в google и узнала эти два метода:
final EditText input = new EditText(getActivity());
input.setTransformationMethod(PasswordTransformationMethod.getInstance());
input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
Но он не работает для меня, он показывает текст. Но я хочу текст с точками. Какая проблема я не знаю. Поэтому, пожалуйста, предложите мне сделать taht.
Спасибо всем заблаговременно.
это код диалога с текстом редактирования:
public void showDialog(){
/* Alert Dialog Code Start*/
AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
// alert.setTitle("JPOP"); //Set Alert dialog title here
alert.setMessage(" Please enter password"); //Message here
Log.e("dialog in password ","passworddddddddddddddddd");
// Set an EditText view to get user input
final EditText input = new EditText(getActivity());
// input.setInputType(InputType.TYPE_CLASS_TEXT);
// input.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
// input.setTransformationMethod(PasswordTransformationMethod.getInstance());
// final EditText input = new EditText(getActivity());
input.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
input.setTransformationMethod(new PasswordTransformationMethod());
input.setHint("Password");
input.setSingleLine();
input.setTextSize(14);
alert.setView(input);
alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
strPassword = input.getEditableText().toString().trim();
if(strPassword.length()!=0){
String prestatus =DataUrls.preferences.getString("Password", "");
if(prestatus.equals(strPassword)){
if(price_reports_check){
price_reports_check=false;
ReportsFragment reportfragment = new ReportsFragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.details, reportfragment);
fragmentTransaction.commit();
}else{
PriceListFragment pricelistfragment = new PriceListFragment();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.details, pricelistfragment);
fragmentTransaction.commit();
}
}else
{
showDialog();
Toast.makeText(getActivity(), "The password you entered is wrong", Toast.LENGTH_SHORT).show();
}
}
else
{
showDialog();
Toast.makeText(getActivity(), "Please Enter Password", Toast.LENGTH_SHORT).show();
}
} // End of onClick(DialogInterface dialog, int whichButton)
}); //End of ok....
alert.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
// Canceled.
dialog.cancel();
}
}); //End of alert.setNegativeButton
AlertDialog alertDialog = alert.create();
TextView title = new TextView(getActivity());
// You Can Customise your Title here
title.setText("JPOP");
// title.setBackgroundColor(Color.DKGRAY);
title.setPadding(10, 10, 10, 10);
title.setGravity(Gravity.CENTER);
// title.setTextColor(Color.WHITE);
title.setTextSize(20);
alert.setCustomTitle(title);
alert.setCancelable(false);
alert.show();
}
Итак, пожалуйста, помогите мне, что я сделал неправильно. Спасибо @All
Ответы
Ответ 1
Вы получаете эту проблему , потому что используете alert.setCustomTitle(title);
после
input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
input.setTransformationMethod(PasswordTransformationMethod.getInstance());
Что делает его снова нормальным типом
либо измените: alert.setCustomTitle(title);
на alert.setTitle("your title here");
или, если вы хотите использовать customeTitle
Чем использовать следующий код
input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
input.setTransformationMethod(PasswordTransformationMethod.getInstance());
alert.setView(input);
после
alert.setCustomTitle(title);
Ответ 2
попробуйте только input.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
Ответ 3
Удалите это и попробуйте
InputType.TYPE_CLASS_TEXT
Ответ 4
Вам нужно позвонить:
input.setTransformationMethod(PasswordTransformationMethod.getInstance());
Как описано здесь.
Кроме того, поскольку комментарии упоминаются в предоставленном вопросе:
вам нужно вызвать setTransformationMethod вместо setInputType. Вызов setInputType после setTransformationMethod заставляет EditText снова не находиться в режиме пароля.
Таким образом, для моего понимания это должно выглядеть следующим образом:
input.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD );
input.setTransformationMethod(PasswordTransformationMethod.getInstance());