how to set input type as password to edittext prog

2019-06-15 18:40发布

问题:

This question already has an answer here:

  • Set inputType for an EditText Programmatically? 11 answers

Hi all I am using alert dialog with edit text.So I want to set input type as password to that edit text programatically.I have searched a lot in google and find out these two methods:

final EditText input = new EditText(getActivity()); 

input.setTransformationMethod(PasswordTransformationMethod.getInstance());

input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); 

But it is not working for me,It showing the text.But i want dotted text.what is the problem I dont know.So please suggest me to do taht. Thanks to all in advance. this is the code of dialog with edit text:

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();


         }

So please help me what I did wrong.Thanks @All

回答1:

You are getting this problem because you are using alert.setCustomTitle(title);

after

input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
        input.setTransformationMethod(PasswordTransformationMethod.getInstance());

Which making it again to normal type

either change : alert.setCustomTitle(title); to alert.setTitle("your title here");

or if you want to use customeTitle

Than use following code

input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
input.setTransformationMethod(PasswordTransformationMethod.getInstance());
alert.setView(input);

after

alert.setCustomTitle(title);


回答2:

only try thisinput.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);



回答3:

Remove this and try

InputType.TYPE_CLASS_TEXT



回答4:

You need to call:

input.setTransformationMethod(PasswordTransformationMethod.getInstance());

As described here.

Also, as comments mentions in provided question:

you need to call setTransformationMethod instead of setInputType. Calling setInputType after setTransformationMethod causes the EditText to not be in password mode again.

So, it should look like the following per my understanding:

    input.setInputType( InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD );
    input.setTransformationMethod(PasswordTransformationMethod.getInstance());