উত্তর:
আপনি গতিশীলভাবে একটি পাঠ্য ভিউয়ের বৈশিষ্ট্যগুলি পরিবর্তন করতে পারেন। আপনি যদি এক্সএমএল অ্যাট্রিবিউটকে android:password
সত্যে সেট করে থাকেন তবে ভিউটি বিন্দু প্রদর্শন করবে যদি আপনি এটি মিথ্যাতে সেট করে থাকেন তবে পাঠ্যটি প্রদর্শিত হবে।
পদ্ধতিটি ট্রান্সফরমেশনমথড দিয়ে আপনার কোড থেকে এই বৈশিষ্ট্যগুলি পরিবর্তন করতে সক্ষম হওয়া উচিত। (অস্বীকৃতি: ভিউটি প্রদর্শিত হওয়ার পরেও যদি পদ্ধতিটি এখনও কাজ করে তবে আমি পরীক্ষা করে দেখিনি that যদি আপনার যদি সমস্যা হয় তবে তা জানার জন্য আমাকে একটি মন্তব্য করুন))
সম্পূর্ণ নমুনা কোড হবে
yourTextView.setTransformationMethod(new PasswordTransformationMethod());
পাসওয়ার্ডটি গোপন করতে। পাসওয়ার্ডটি দেখানোর জন্য আপনি বিদ্যমান রূপান্তর পদ্ধতিগুলির মধ্যে একটি সেট করতে পারেন বা একটি ফাঁকা ট্রান্সফর্মেশনমথড প্রয়োগ করতে পারেন যা ইনপুট পাঠ্যের সাথে কিছুই করে না।
yourTextView.setTransformationMethod(new DoNothingTransformation());
সমর্থন লাইব্রেরি v24.2.0 থেকে এটি অর্জন করা সত্যিই সহজ।
আপনার যা করা দরকার তা হ'ল:
আপনার নির্ভরশীলগুলিতে ডিজাইন গ্রন্থাগার যুক্ত করুন
dependencies {
compile "com.android.support:design:24.2.0"
}
TextInputEditText
সাথে একযোগে ব্যবহার করুনTextInputLayout
<android.support.design.widget.TextInputLayout
android:id="@+id/etPasswordLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleEnabled="true"
android:layout_marginBottom="@dimen/login_spacing_bottom">
<android.support.design.widget.TextInputEditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/fragment_login_password_hint"
android:inputType="textPassword"/>
</android.support.design.widget.TextInputLayout>
passwordToggleEnabled
অ্যাট্রিবিউট কাজ হবে!
আপনার মূল বিন্যাসে যোগ করতে ভুলবেন না xmlns:app="http://schemas.android.com/apk/res-auto"
আপনি আপনার পাসওয়ার্ড টগল ব্যবহার করে কাস্টমাইজ করতে পারেন:
app:passwordToggleDrawable
- পাসওয়ার্ড ইনপুট দৃশ্যমানতা টগল আইকন হিসাবে ব্যবহারের জন্য অঙ্কনযোগ্য।
app:passwordToggleTint
- পাসওয়ার্ড ইনপুট ভিজিবিলিটি টগল করার জন্য আইকনটি ব্যবহার করুন।
app:passwordToggleTintMode
- ব্যাকগ্রাউন্ড টিন্ট প্রয়োগ করতে ব্লেন্ডিং মোড ব্যবহৃত হয়।
টেক্সটইনপুটলয়আউট ডকুমেন্টেশনে আরও বিশদ ।
AndroidX এর জন্য
android.support.design.widget.TextInputLayout
সঙ্গে প্রতিস্থাপনcom.google.android.material.textfield.TextInputLayout
android.support.design.widget.TextInputEditText
সঙ্গে প্রতিস্থাপনcom.google.android.material.textfield.TextInputEditText
android:text
এট্রিবিউট সহ কিছু গণ্ডগোল রয়েছে TextInputEditText
। আপনি সর্বদা অ্যান্ড্রয়েডের জন্য গুগল ইস্যু ট্র্যাকার
app:passwordToggleDrawable
(অবমূল্যায়িত) ব্যবহার করে আমাদের বিপরীত করতে হবে বা app:endIconDrawable
তারপরে কাস্টম ড্রয়াবল ব্যবহার করতে হবে যেমন <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_eye_close" android:state_checked="true"/> <item android:drawable="@drawable/ic_eye_open"/> </selector>
আমার মনে হয় গুগলের এই আচরণটি ঠিক করা উচিত। ভাল আলোচনা
পাসওয়ার্ডের পরিবর্তে বিন্দুগুলি দেখানোর জন্য পাসওয়ার্ড ট্রান্সফর্মেশনমথড সেট করুন:
yourEditText.setTransformationMethod(new PasswordTransformationMethod());
অবশ্যই আপনি এটির সাথে xML লেআউটে আপনার এডিটেক্সট উপাদানটিতে ডিফল্টরূপে সেট করতে পারেন
android:password
পঠনযোগ্য পাসওয়ার্ডটি আবার দেখাতে কেবল রূপান্তর পদ্ধতি হিসাবে নাল পাস করুন:
yourEditText.setTransformationMethod(null);
android:password
এখন হ্রাস করা হয়েছে, এবং এর android:inputType
পরিবর্তে আপনার ব্যবহার করা উচিত ।
editText.getSelectionStart()
এবং editText.getSelectionEnd()
কার্সার অবস্থানে সংরক্ষণ করার জন্য এবং editText.setSelection(start, end)
এটি পুনরূদ্ধার জন্য।
দেখানো:
editText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
আড়াল করতে:
editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
এর প্রত্যেকটি কার্সার পুনরায় সেট করার পরে, তাই:
editText.setSelection(editText.length());
তুমি ব্যবহার করতে পার app:passwordToggleEnabled="true"
এখানে নীচে দেওয়া উদাহরণ
<android.support.design.widget.TextInputLayout
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleEnabled="true"
android:textColorHint="@color/colorhint"
android:textColor="@color/colortext">
app:endIconMode="password_toggle"
।
চেকবক্স ব্যবহার করুন এবং সেই অনুযায়ী ইনপুট প্রকারটি পরিবর্তন করুন।
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int start,end;
Log.i("inside checkbox chnge",""+isChecked);
if(!isChecked){
start=passWordEditText.getSelectionStart();
end=passWordEditText.getSelectionEnd();
passWordEditText.setTransformationMethod(new PasswordTransformationMethod());;
passWordEditText.setSelection(start,end);
}else{
start=passWordEditText.getSelectionStart();
end=passWordEditText.getSelectionEnd();
passWordEditText.setTransformationMethod(null);
passWordEditText.setSelection(start,end);
}
}
private boolean isPasswordVisible;
private TextInputEditText firstEditText;
...
firstEditText = findViewById(R.id.et_first);
...
private void togglePassVisability() {
if (isPasswordVisible) {
String pass = firstEditText.getText().toString();
firstEditText.setTransformationMethod(PasswordTransformationMethod.getInstance());
firstEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
firstEditText.setText(pass);
firstEditText.setSelection(pass.length());
} else {
String pass = firstEditText.getText().toString();
firstEditText.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
firstEditText.setInputType(InputType.TYPE_CLASS_TEXT);
firstEditText.setText(pass);
firstEditText.setSelection(pass.length());
}
isPasswordVisible= !isPasswordVisible;
}
এটি আমার পক্ষে কাজ his এটি আপনাকে অবশ্যই সাহায্য করবে
showpass.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(!isChecked){
// show password
password_login.setTransformationMethod(PasswordTransformationMethod.getInstance());
Log.i("checker", "true");
}
else{
Log.i("checker", "false");
// hide password
password_login.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}
}
});
আমি মনে করি আমি এই প্রশ্নের উত্তর চাই সেখানে কিছু ভাল উত্তরও দিতে চাই,
ডকুমেন্টেশন অনুসারে ট্রান্সফর্মেশনমথড আমাদের মিশনটি করে
TransformationMethod
টেক্সটভিউ ট্রান্সফর্মেশনমিথডস ব্যবহার করে যেমন বিন্দুর সাহায্যে পাসওয়ার্ডের অক্ষরগুলি প্রতিস্থাপন করা বা একক-লাইন পাঠ্য ক্ষেত্রে নতুন লাইনের অক্ষরগুলি লাইন বিরতি সৃষ্টি করা থেকে রক্ষা করে।
লক্ষ্য করুন আমি মাখনের ছুরি ব্যবহার করি, তবে যদি ব্যবহারকারী চেক পাসওয়ার্ড দেখায় তবে এটি একই রকম
@OnCheckedChanged(R.id.showpass)
public void onChecked(boolean checked){
if(checked){
et_password.setTransformationMethod(null);
}else {
et_password.setTransformationMethod(new PasswordTransformationMethod());
}
// cursor reset his position so we need set position to the end of text
et_password.setSelection(et_password.getText().length());
}
আমি একটি ব্লকে স্ব-অন্তর্ভুক্ত মাত্র কয়েকটি লাইন দিয়ে শোপ্যাসওয়ার্ড / হাইডপ্যাসওয়ার্ড কোড যুক্ত করতে সক্ষম হচ্ছি:
protected void onCreate(Bundle savedInstanceState) {
...
etPassword = (EditText)findViewById(R.id.password);
etPassword.setTransformationMethod(new PasswordTransformationMethod()); // Hide password initially
checkBoxShowPwd = (CheckBox)findViewById(R.id.checkBoxShowPwd);
checkBoxShowPwd.setText(getString(R.string.label_show_password)); // Hide initially, but prompting "Show Password"
checkBoxShowPwd.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton arg0, boolean isChecked) {
if (isChecked) {
etPassword.setTransformationMethod(null); // Show password when box checked
checkBoxShowPwd.setText(getString(R.string.label_hide_password)); // Prompting "Hide Password"
} else {
etPassword.setTransformationMethod(new PasswordTransformationMethod()); // Hide password when box not checked
checkBoxShowPwd.setText(getString(R.string.label_show_password)); // Prompting "Show Password"
}
}
} );
...
আমার একই সমস্যা ছিল এবং এটি কার্যকর করা খুব সহজ।
আপনাকে যা করতে হবে তা হ'ল আপনার সম্পাদনা পাঠ্য ক্ষেত্রটি একটি (com.google.android.matory.textfield.TextInputLayout) এ মোড়ানো এবং সেই অ্যাডটিতে (অ্যাপ: পাসওয়ার্ডটগলইনবলড = "সত্য")।
এটি এডিটেক্সট ক্ষেত্রটিতে চোখ প্রদর্শন করবে এবং আপনি যখন এটিতে ক্লিক করবেন তখন পাসওয়ার্ডটি উপস্থিত হবে এবং আবার ক্লিক করলে অদৃশ্য হয়ে যাবে।
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textColorHint="#B9B8B8"
app:passwordToggleEnabled="true">
<EditText
android:id="@+id/register_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="24dp"
android:layout_marginRight="44dp"
android:backgroundTint="#BEBEBE"
android:hint="Password"
android:inputType="textPassword"
android:padding="16dp"
android:textSize="18sp" />
</com.google.android.material.textfield.TextInputLayout>
private int passwordNotVisible=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
showPassword = (ImageView) findViewById(R.id.show_password);
showPassword.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText paswword = (EditText) findViewById(R.id.Password);
if (passwordNotVisible == 1) {
paswword.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
passwordNotVisible = 0;
} else {
paswword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
passwordNotVisible = 1;
}
paswword.setSelection(paswword.length());
}
});
}
খুব সাধারণ আকারে:
private fun updatePasswordVisibility(editText: AppCompatEditText) {
if (editText.transformationMethod is PasswordTransformationMethod) {
editText.transformationMethod = null
} else {
editText.transformationMethod = PasswordTransformationMethod()
}
editText.setSelection(editText.length())
}
আশা করি এটা সাহায্য করবে.
আপনি নীচের কোডটি ব্যবহার করে পাসওয়ার্ডটি প্রদর্শন / লুকিয়ে রাখতে পারেন:
এক্সএমএল কোড:
<EditText
android:id="@+id/etPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="21dp"
android:layout_marginTop="14dp"
android:ems="10"
android:inputType="textPassword" >
<requestFocus />
</EditText>
<CheckBox
android:id="@+id/cbShowPwd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/etPassword"
android:layout_below="@+id/etPassword"
android:text="@string/show_pwd" />
জাভা কোড:
EditText mEtPwd;
CheckBox mCbShowPwd;
mEtPwd = (EditText) findViewById(R.id.etPassword);
mCbShowPwd = (CheckBox) findViewById(R.id.cbShowPwd);
mCbShowPwd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// checkbox status is changed from uncheck to checked.
if (!isChecked) {
// show password
mEtPwd.setTransformationMethod(PasswordTransformationMethod.getInstance());
} else {
// hide password
mEtPwd.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}
}
});
এটা চেষ্টা কর:
প্রথমে একটি পতাকাটিকে বিশ্বব্যাপী হিসাবে সংজ্ঞায়িত করুন:
private boolean isShowPassword = false;
এবং শোতে এবং পাসওয়ার্ডের পাসওয়ার্ড বোতামে ট্যাপ পরিচালনা করতে শ্রোতাদের সেট করুন:
imgPassword.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isShowPassword) {
etPassword.setTransformationMethod(new PasswordTransformationMethod());
imgPassword.setImageDrawable(getResources().getDrawable(R.drawable.ic_eye_hide));
isShowPassword = false;
}else{
etPassword.setTransformationMethod(null);
imgPassword.setImageDrawable(getResources().getDrawable(R.drawable.ic_eye_show));
isShowPassword = true;
}
}
});
গিথুব এ https://github.com/maksim88/PasswordEditText প্রকল্প চেষ্টা করুন । এমনকি আপনার জাভা কোডটি এটি ব্যবহার করার প্রয়োজন নেই। শুধু পরিবর্তন
লেখা সম্পাদনা
ট্যাগ করুন
com.maksim88.passwordedittext.PasswordEditText
আপনার এক্সএমএল ফাইলে।
এক্সএমএল
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:inputType="textPassword"
android:id="@+id/edtPass"
android:textSize="20dp"
android:hint="password"
android:padding="20dp"
android:background="#efeaea"
android:layout_width="match_parent"
android:layout_margin="20dp"
android:layout_height="wrap_content" />
<CheckBox
android:background="#ff4"
android:layout_centerInParent="true"
android:textSize="25dp"
android:text="show password"
android:layout_below="@id/edtPass"
android:id="@+id/showPassword"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:gravity="top|right"
android:layout_height="wrap_content" />
</RelativeLayout>
জাভা কোড
package com.example.root.sql2;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.AppCompatCheckBox;
import android.support.v7.widget.Toolbar;
import android.text.method.HideReturnsTransformationMethod;
import android.text.method.PasswordTransformationMethod;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
public class password extends AppCompatActivity {
EditText password;
CheckBox show_hide_password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.hide);
findViewById();
show_hide_pass();
}//end onCreate
public void show_hide_pass(){
show_hide_password.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (!b){
// hide password
password.setTransformationMethod(PasswordTransformationMethod.getInstance());
}else{
// show password
password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}
}
});
} // end show_hide_pass
public void findViewById(){ // find ids ui and
password = (EditText) findViewById(R.id.edtPass);
show_hide_password = (CheckBox) findViewById(R.id.showPassword);
}//end findViewById
}// end class
আপনি সেট ট্রান্সফর্মেশনমেডোড দিয়ে চেষ্টা করেছেন? এটি টেক্সটভিউ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত এবং একটি পরামিতি হিসাবে ট্রান্সফর্মেশনমথড চাই।
আপনি এখানে ট্রান্সফর্মেশনমিথডগুলি সম্পর্কে আরও জানতে পারেন ।
এটিতে কিছু দুর্দান্ত বৈশিষ্ট্য রয়েছে, যেমন চরিত্র প্রতিস্থাপন।
আমি যা করেছি তা হ'ল
আপনি আরও বিশদ পদক্ষেপ এবং ব্যাখ্যার জন্য এই ভিডিওটি দেখতে পারেন https://youtu.be/md3eVaRzdIM
আশা করি এটা সাহায্য করবে :)
এখানে টেক্সটইনপুটএডিটটেক্সট এবং ট্রান্সফর্মেশন পদ্ধতিটি ব্যবহার না করেই আমার সমাধান।
এক্সএমএল
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
style="@style/FormLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/username" />
<EditText
android:id="@+id/loginUsername"
style="@style/EditTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/ic_person_outline_black_24dp"
android:drawableStart="@drawable/ic_person_outline_black_24dp"
android:inputType="textEmailAddress"
android:textColor="@color/black" />
<TextView
style="@style/FormLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/password" />
<EditText
android:id="@+id/loginPassword"
style="@style/EditTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableEnd="@drawable/ic_visibility_off_black_24dp"
android:drawableLeft="@drawable/ic_lock_outline_black_24dp"
android:drawableRight="@drawable/ic_visibility_off_black_24dp"
android:drawableStart="@drawable/ic_lock_outline_black_24dp"
android:inputType="textPassword"
android:textColor="@color/black" />
</LinearLayout>
জাভা কোড
boolean VISIBLE_PASSWORD = false; //declare as global variable befor onCreate()
loginPassword = (EditText)findViewById(R.id.loginPassword);
loginPassword.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
final int DRAWABLE_LEFT = 0;
final int DRAWABLE_TOP = 1;
final int DRAWABLE_RIGHT = 2;
final int DRAWABLE_BOTTOM = 3;
if (event.getAction() == MotionEvent.ACTION_UP) {
if (event.getRawX() >= (loginPassword.getRight() - loginPassword.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
// your action here
//Helper.toast(LoginActivity.this, "Toggle visibility");
if (VISIBLE_PASSWORD) {
VISIBLE_PASSWORD = false;
loginPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
loginPassword.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_lock_outline_black_24dp, 0, R.drawable.ic_visibility_off_black_24dp, 0);
} else {
VISIBLE_PASSWORD = true;
loginPassword.setInputType(InputType.TYPE_CLASS_TEXT);
loginPassword.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_lock_outline_black_24dp, 0, R.drawable.ic_visibility_black_24dp, 0);
}
return false;
}
}
return false;
}
});
এই উত্স অনুসারে , আপনি যদি নিজের প্রকল্পটি অ্যান্ড্রয়েডএক্সে স্থানান্তরিত করে থাকেন তবে আপনি প্রতিস্থাপন করতে পারেন
compile "com.android.support:design:24.2.0"
সঙ্গে
implementation "com.google.android.material:material:1.0.0"
তারপরে আপনাকে যা করতে হবে তা হ'ল নীচে কোডটি আপনার লেআউট ফাইলে রেখে দেওয়া:
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:passwordToggleEnabled="true"
android:hint="@string/hint_text">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</com.google.android.material.textfield.TextInputLayout>
উপাদান সম্পর্কে আরও তথ্য এখানেTextInputLayout
পাওয়া যাবে ।
এই উত্সটিতে, অ্যান্ড্রয়েড সমর্থন লাইব্রেরি থেকে অ্যান্ড্রয়েডএক্সে স্থানান্তরিত করার পরামর্শ দেওয়া হচ্ছে:
অ্যান্ড্রয়েডএক্স ওপেন-সোর্স প্রকল্প যা অ্যান্ড্রয়েড দল জেটপ্যাকের মধ্যে বিকাশ, পরীক্ষা, প্যাকেজ, সংস্করণ এবং লাইব্রেরি প্রকাশ করতে ব্যবহার করে।
অ্যান্ড্রয়েডএক্স মূল অ্যান্ড্রয়েড সমর্থন লাইব্রেরিতে একটি বড় উন্নতি। সমর্থন লাইব্রেরির মতো, অ্যান্ড্রয়েডএক্স অ্যান্ড্রয়েড ওএস থেকে পৃথকভাবে জাহাজ সরবরাহ করে এবং অ্যান্ড্রয়েড রিলিজ জুড়ে পিছনে-সামঞ্জস্যতা সরবরাহ করে। অ্যান্ড্রয়েডএক্স ফিচার প্যারিটি এবং নতুন লাইব্রেরি সরবরাহ করে সমর্থন লাইব্রেরির পুরোপুরি প্রতিস্থাপন করে। এছাড়াও অ্যান্ড্রয়েডএক্সে নিম্নলিখিত বৈশিষ্ট্যগুলি অন্তর্ভুক্ত রয়েছে:
অ্যান্ড্রয়েডএক্সের সমস্ত প্যাকেজ অ্যান্ড্রয়েডএক্স স্ট্রিং দিয়ে শুরু করে একটি সামঞ্জস্যপূর্ণ নেমস্পেসে বাস করে। সমর্থন লাইব্রেরি প্যাকেজগুলি সংশ্লিষ্ট অ্যান্ড্রয়েডেক্স * প্যাকেজগুলিতে ম্যাপ করা হয়েছে। সমস্ত পুরানো শ্রেণীর পুরো ম্যাপিং এবং নতুনগুলিতে শিল্পকর্ম তৈরি করার জন্য, প্যাকেজ রিফ্যাক্টরিং পৃষ্ঠাটি দেখুন।
সমর্থন লাইব্রেরি থেকে ভিন্ন, অ্যান্ড্রয়েডএক্স প্যাকেজগুলি পৃথকভাবে রক্ষণাবেক্ষণ এবং আপডেট করা হয়। অ্যান্ড্রয়েডপ প্যাকেজগুলি 1.0.0.0 সংস্করণ দিয়ে শুরু করে কঠোর সিমান্টিক সংস্করণ ব্যবহার করে। আপনি আপনার প্রকল্পে অ্যান্ড্রয়েডএক্স লাইব্রেরিগুলি স্বাধীনভাবে আপডেট করতে পারেন।
সমস্ত নতুন সাপোর্ট লাইব্রেরি বিকাশ অ্যান্ড্রয়েডএক্স লাইব্রেরিতে ঘটবে। এর মধ্যে মূল সমর্থন লাইব্রেরি শিল্পকলাগুলির রক্ষণাবেক্ষণ এবং নতুন জেটপ্যাক উপাদানগুলির অন্তর্ভুক্ত রয়েছে।
প্রথমে এটি একটি চিত্র ভেক্টর সম্পদ দৃশ্যমানতায় লোড হওয়া পর্দা
ক্লিক করার পরে এটি এই চিত্রটির দৃশ্যমানতা বন্ধ হয়ে যাবে
উপরের পাসওয়ার্ড সুইচ জন্য কোড (এক্সএমএল কোড)
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/laypass"
android:layout_width="330dp"
android:layout_height="50dp"
android:layout_marginTop="24dp"
app:layout_constraintEnd_toEndOf="@+id/editText3"
app:layout_constraintStart_toStartOf="@+id/editText3"
app:layout_constraintTop_toBottomOf="@+id/editText3">
<EditText
android:id="@+id/edit_password"
style="@style/EditTextTheme"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/round"
android:drawableLeft="@drawable/ic_password"
android:drawablePadding="10dp"
android:ems="10"
android:hint="Password"
android:inputType="textPassword"
android:paddingLeft="10dp"
android:paddingRight="15dp"
android:textColor="@color/cyan92a6"
android:textColorHint="@color/cyan92a6"
android:textCursorDrawable="@null"
android:textSize="18sp"
/>
<ImageView
android:id="@+id/show_pass_btn"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginEnd="8dp"
android:alpha=".5"
android:onClick="ShowHidePass"
android:padding="5dp"
android:src="@drawable/ic_visibility"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/laypass"
app:layout_constraintTop_toTopOf="@+id/edit_password" />
</androidx.constraintlayout.widget.ConstraintLayout>
বোতাম অপারেশনের জন্য জাভা কোড
public void ShowHidePass(View view) {
if(view.getId()==R.id.show_pass_btn){
if(edit_password.getTransformationMethod().equals(PasswordTransformationMethod.getInstance())){
((ImageView)(view)).setImageResource(R.drawable.ic_visibility_off);
//Show Password
edit_password.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}
else{
((ImageView)(view)).setImageResource(R.drawable.ic_visibility);
//Hide Password
edit_password.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
}
}
এক্সএমএলে এটি করুন
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:orientation="vertical"
>
<RelativeLayout
android:id="@+id/REFReLayTellFriend"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<EditText
android:id="@+id/etpass1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:bottomLeftRadius="10dp"
android:bottomRightRadius="50dp"
android:fontFamily="@font/frutiger"
android:gravity="start"
android:inputType="textPassword"
android:hint="@string/regpass_pass1"
android:padding="20dp"
android:paddingBottom="10dp"
android:textColor="#000000"
android:textColorHint="#d3d3d3"
android:textSize="14sp"
android:topLeftRadius="10dp"
android:topRightRadius="10dp"/>
<ImageButton
android:id="@+id/imgshowhide1"
android:layout_width="40dp"
android:layout_height="20dp"
android:layout_marginTop="20dp"
android:layout_marginRight="10dp"
android:background="@drawable/showpass"
android:layout_alignRight="@+id/etpass1"/>
</RelativeLayout>
boolean show=true;
//on image click inside password do this
if(show){
imgshowhide2.setBackgroundResource(0);
imgshowhide2.setBackgroundResource(R.drawable.hide);
etpass2.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
etpass2.setSelection(etpass2.getText().length());
show=false;
}else{
imgshowhide2.setBackgroundResource(0);
imgshowhide2.setBackgroundResource(R.drawable.showpass);
//etpass1.setInputType(InputType.TYPE_TEXT);
etpass2.setInputType(InputType.TYPE_CLASS_TEXT |
InputType.TYPE_TEXT_VARIATION_PASSWORD);
etpass2.setSelection(etpass2.getText().length());
show=true;
}
আমার কোটলিন এক্সটেনশন। একবার সর্বত্র ব্যবহার লিখুন
fun EditText.tooglePassWord() {
this.tag = !((this.tag ?: false) as Boolean)
this.inputType = if (this.tag as Boolean)
InputType.TYPE_TEXT_VARIATION_PASSWORD
else
(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD)
this.setSelection(this.length()) }
আপনি এই পদ্ধতিটি যে কোনও ফাইলে রাখতে পারেন এবং যেকোন জায়গায় এটি ব্যবহার করুন it
ivShowPassword.click { etPassword.tooglePassWord() }
যেখানে ivShowPassword ক্লিক করা হয় চিত্রের ভিউ (আই) এবং etPassword হয় এডিটেক্সট
একটি ভাল সমাধান। একটি বোতাম সেট আপ করুন, তারপরে এই কোডটি ব্যবহার করুন:
public void showPassword(View v)
{
TextView showHideBtnText = (TextView) findViewById(R.id.textView1);
if(showHideBtnText.getText().toString().equals("Show Password")){
password.setTransformationMethod(null);
showHideBtnText.setText("Hide");
} else{
password.setTransformationMethod(new PasswordTransformationMethod());
showHideBtnText.setText("Show Password");
}
}
এই পদ্ধতিটি যুক্ত করুন:
fun EditText.revertTransformation() {
transformationMethod = when(transformationMethod) {
is PasswordTransformationMethod -> SingleLineTransformationMethod.getInstance()
else -> PasswordTransformationMethod.getInstance()
}
}
এটি কল করুন ইনপুট ধরণের অবস্থার মধ্যে স্যুইচ হবে (আপনি নিজের পছন্দটিতে সিঙ্গল-লাইন রূপান্তর পরিবর্তন করতে পারেন)। ব্যবহারের উদাহরণ:
editText.revertTransformation()
1> Make a selector file "show_password_selector.xml".
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/pwd_hide"
android:state_selected="true"/>
<item android:drawable="@drawable/pwd_show"
android:state_selected="false" />
</selector>
2>set "show_password_selector" file into imageview.
<ImageView
android:id="@+id/iv_pwd"
android:layout_width="@dimen/_35sdp"
android:layout_height="@dimen/_25sdp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="@dimen/_15sdp"
android:src="@drawable/show_password_selector" />
3> put below code in java file.
iv_new_pwd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (iv_new_pwd.isSelected()) {
iv_new_pwd.setSelected(false);
Log.d("mytag", "in case 1");
edt_new_pwd.setInputType(InputType.TYPE_CLASS_TEXT);
} else {
Log.d("mytag", "in case 1");
iv_new_pwd.setSelected(true);
edt_new_pwd.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
}
});
1> Make a selector file "show_password_selector.xml".
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/pwd_hide"
android:state_selected="true"/>
<item android:drawable="@drawable/pwd_show"
android:state_selected="false" />
</selector>
2>set "show_password_selector" file into imageview.
<ImageView
android:id="@+id/iv_pwd"
android:layout_width="@dimen/_35sdp"
android:layout_height="@dimen/_25sdp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="@dimen/_15sdp"
android:src="@drawable/show_password_selector" />
3> put below code in java file.
iv_new_pwd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (iv_new_pwd.isSelected()) {
iv_new_pwd.setSelected(false);
Log.d("mytag", "in case 1");
edt_new_pwd.setInputType(InputType.TYPE_CLASS_TEXT);
} else {
Log.d("mytag", "in case 1");
iv_new_pwd.setSelected(true);
edt_new_pwd.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
}
}
});
if (inputPassword.getTransformationMethod() == PasswordTransformationMethod.getInstance()) {
//password is visible
inputPassword.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
}
else if(inputPassword.getTransformationMethod() == HideReturnsTransformationMethod.getInstance()) {
//password is hidden
inputPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
}
setTransformationMethod(null)
।