I use an EditText to enter password.
And a CheckBox to show password or not.
Below function is the part:
public void ShowPassword() {
if (cb.isChecked()) {
password.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
} else {
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
}
When it checked, it show password.
But when it not checked, it does show stars.
How to modify it to show star while the cb is not checked?
I don’t know exactly the specifics, but this code should work:
checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(!isChecked) {
password.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
} else {
password.setInputType(129);
}
}
});
129
is the input type set when setting android:inputType="textPassword"
edit:
as mentioned in @user370305’s answer, 129
is the value of the bitwise or operation when you do
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
Answer:
This is not an answer,
Answer already given and accepted..
I just want to clarify about 129
password.setInputType(129);
is Actually,
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
‘|’ is not a pipe, it’s a bitwise OR
. It takes two binary numbers and if either of the bits of equal value are 1,
How this relates to the input type: Each of the InputTypes are actually just ints.
TYPE_CLASS_TEXT is 1
, and TYPE_TEXT_VARIATION_PASSWORD is 128 (or 10000000)
.
Perform a bitwise OR
on them:
00000001
10000000
------------
10000001 which is 129.
Try entering input.setInputType(129);
instead, you’ll see it’ll work. 🙂
Answer:
I think you are using the wrong function. I make that way and work perfectly:
passwordEditView = (EditText) rootView.findViewById(R.id.password);
final CheckBox showPasswordCheckBox = (CheckBox) rootView.findViewById(R.id.checkbox);
showPasswordCheckBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (showPasswordCheckBox.isChecked()){
passwordEditView.setTransformationMethod(null);
}else{
passwordEditView.setTransformationMethod(new PasswordTransformationMethod());
}
}
});
Answer:
This might help you mate
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// checkbox status is changed from uncheck to checked.
if (!isChecked) {
// show password
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
} else {
// hide password
editText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}
}
});
Answer:
The Password Visibility Toggle feature has been added to support library version 24.2.0 enabling you to toggle the password straight from the password field without the need for a CheckBox.
You can make that work basically by setting an inputType of password on the TextInputEditText
. Here’s how to do that:
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/password"
android:inputType="textPassword"/>
</android.support.design.widget.TextInputLayout>
Answer:
use app:passwordToggleEnabled = true; available from Android support library version 24.2.0.
<android.support.design.widget.TextInputLayout
android:id="@+id/input_layout_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
app:passwordToggleEnabled="true"
tools:visibility="visible"
android:layout_marginBottom="@dimen/space_medium">
<android.support.design.widget.TextInputEditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:imeOptions="actionDone"
android:imeActionLabel="@string/btn_sign_in"
android:hint="@string/hint_password" />
</android.support.design.widget.TextInputLayout>
Answer:
instead of visible password, can you try with TYPE_TEXT_VARIATION_NORMAL
public void ShowPassword() {
password.setInputType((cb.isChecked()) ?
InputType.TYPE_TEXT_VARIATION_NORMAL : InputType.TYPE_TEXT_VARIATION_PASSWORD;
}
Answer:
Call this method inside your OnCheckedChangedListener
public static void toggleShowPassword(boolean show, EditText editText) {
if (show)
editText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
else
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
editText.setSelection(editText.length());
}
The EditText
cursor resets its position after changing the InputType
that’s why we add the last line editText.setSelection(editText.length())
Answer:
This will work –
public void ShowPassword() {
if (cb.isChecked()) {
password.setInputType(InputType.TYPE_CLASS_TEXT);
} else {
password.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
}
Answer:
on the off chance that you are using Xamarin (Visual Studio Mac as it’s now called) you can achieve it this way (I used a Switch)
/// <summary>
/// Toggles the password.
/// </summary>
/// <param name="field">Field.</param>
/// <param name="isChecked">If set to <c>true</c> is checked.</param>
private void TogglePassword(TextView field, bool isChecked)
{
/// masks with password character
if (isChecked)
{
field.TransformationMethod = new PasswordTransformationMethod();
}
/// unmasks password
else
{
field.TransformationMethod = null;
}
Then on your Switch .click do something like this
switch.Click += delegate {
TogglePassword(textView, switch.Checked);
};
Answer:
okay:
To show readeable text:
setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD)
To “star” the password:
setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD)
But why? The Type_Text_Variation_Password
set it to stars, but why does only adding Type_Claas_Text
revive the visibel password?
I would have thought that Type_Text_Variation_VISIBLE_Password
comes into play …
Answer:
public void onCheckBox(View v2)
{
CheckBox cb = (CheckBox)this.findViewById(R.id.pass_Check);
EditText et1=(EditText)this.findViewById(R.id.edt_Pass);
if(cb.isChecked())
{
et1.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
}
else
{
et1.setInputType(129);
}
}
Tags: androidandroid, text