हम प्रोग्राम टाइप के लिए इनपुट प्रकार को प्रोग्रामेटिक रूप से कैसे सेट करते हैं? मैं कोशिश कर रहा हूँ:
mEdit.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
इसका कोई असर नहीं दिख रहा है।
हम प्रोग्राम टाइप के लिए इनपुट प्रकार को प्रोग्रामेटिक रूप से कैसे सेट करते हैं? मैं कोशिश कर रहा हूँ:
mEdit.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
इसका कोई असर नहीं दिख रहा है।
जवाबों:
TextView डॉक्स के अनुसार , एंड्रॉइड का प्रोग्रामेटिक संस्करण: पासवर्ड सेटट्रांसफॉर्मेशनमैथोड () है , न कि सेट इनपुटटाइप ()। तो कुछ इस तरह:
mEdit.setTransformationMethod(PasswordTransformationMethod.getInstance());
चाल चलनी चाहिए।
EditText
(पासवर्ड डॉट्स के साथ वर्ण बदलता है)। इस बात का कोई प्रभाव नहीं पड़ता है कि जो कुछ भी EditText
अपने आप में प्रवेश करने की अनुमति है, उस पर कोई प्रभाव नहीं पड़ता है।
प्रोग्रामटेक्स्ट के लिए इनपुट प्रकार को प्रोग्रामेटिक रूप से सेट करने के लिए, आपको यह निर्दिष्ट करना होगा कि इनपुट क्लास टाइप टेक्स्ट है।
editPass.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
यहाँ विभिन्न इनपुट प्रकार हैं जैसा कि मानक कीबोर्ड पर दिखाया गया है।
editText.setInputType(InputType.TYPE_CLASS_TEXT);
इसके अलावा अन्य विकल्प दस्तावेजTYPE_CLASS_TEXT
में पाए जा सकते हैं ।
<EditText
android:inputType="text"
/>
इसके अलावा अन्य विकल्प दस्तावेजtext
में पाए जा सकते हैं ।
यहाँ ऊपर की छवि के लिए कोड है।
public class MainActivity extends AppCompatActivity {
EditText editText;
TextView textView;
List<InputTypeItem> inputTypes;
int counter = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
textView = findViewById(R.id.textView);
initArray();
}
public void onChangeInputTypeButtonClick(View view) {
if (counter >= inputTypes.size()) {
startOver();
return;
}
textView.setText(inputTypes.get(counter).name);
editText.setInputType(inputTypes.get(counter).value);
editText.setSelection(editText.getText().length());
counter++;
}
private void startOver() {
counter = 0;
textView.setText("");
editText.setInputType(InputType.TYPE_CLASS_TEXT);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
private void initArray() {
inputTypes = new ArrayList<>();
inputTypes.add(new InputTypeItem("date", InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_DATE));
inputTypes.add(new InputTypeItem("datetime", InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_NORMAL));
inputTypes.add(new InputTypeItem("none", InputType.TYPE_NULL));
inputTypes.add(new InputTypeItem("number", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL));
inputTypes.add(new InputTypeItem("numberDecimal", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL));
inputTypes.add(new InputTypeItem("numberPassword", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD));
inputTypes.add(new InputTypeItem("numberSigned", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED));
inputTypes.add(new InputTypeItem("phone", InputType.TYPE_CLASS_PHONE));
inputTypes.add(new InputTypeItem("text", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL));
inputTypes.add(new InputTypeItem("textAutoComplete", InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE));
inputTypes.add(new InputTypeItem("textAutoCorrect", InputType.TYPE_TEXT_FLAG_AUTO_CORRECT));
inputTypes.add(new InputTypeItem("textCapCharacters", InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS));
inputTypes.add(new InputTypeItem("textCapSentences", InputType.TYPE_TEXT_FLAG_CAP_SENTENCES));
inputTypes.add(new InputTypeItem("textCapWords", InputType.TYPE_TEXT_FLAG_CAP_WORDS));
inputTypes.add(new InputTypeItem("textEmailAddress", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS));
inputTypes.add(new InputTypeItem("textEmailSubject", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT));
inputTypes.add(new InputTypeItem("textFilter", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_FILTER));
inputTypes.add(new InputTypeItem("textLongMessage", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE));
inputTypes.add(new InputTypeItem("textMultiLine", InputType.TYPE_TEXT_FLAG_MULTI_LINE));
inputTypes.add(new InputTypeItem("textNoSuggestions", InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS));
inputTypes.add(new InputTypeItem("textPassword", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD));
inputTypes.add(new InputTypeItem("textPersonName", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PERSON_NAME));
inputTypes.add(new InputTypeItem("textPhonetic", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PHONETIC));
inputTypes.add(new InputTypeItem("textPostalAddress", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS));
inputTypes.add(new InputTypeItem("textShortMessage", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE));
inputTypes.add(new InputTypeItem("textUri", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_URI));
inputTypes.add(new InputTypeItem("textVisiblePassword", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD));
inputTypes.add(new InputTypeItem("textWebEditText", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT));
inputTypes.add(new InputTypeItem("textWebEmailAddress", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS));
inputTypes.add(new InputTypeItem("textWebPassword", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD));
inputTypes.add(new InputTypeItem("time", InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_TIME));
}
class InputTypeItem {
private String name;
private int value;
InputTypeItem(String name, int value) {
this.name = name;
this.value = value;
}
}
}
मैं सब के साथ हल है
.setInputType(InputType.TYPE_CLASS_NUMBER);
स्पष्ट डेटा और देखने के लिए
.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
डॉट्स देखने के लिए (यदि डेटा एक संख्या है, तो यह पसंद नहीं है अन्य वर्ग)
यह मेरे जैसे अन्य लोगों के लिए मददगार हो सकता है जो पासवर्ड और फ्री-टेक्स्ट मोड के बीच टॉगल करना चाहते थे। मैंने सुझाए गए इनपुट विधियों का उपयोग करने की कोशिश की लेकिन यह केवल एक दिशा में काम करता है। मैं पासवर्ड से टेक्स्ट पर जा सकता था लेकिन फिर मैं वापस नहीं आ सकता था। टॉगल को संभालने की कोशिश करने वालों के लिए (जैसे एक शो पासवर्ड चेक बॉक्स) उपयोग
@Override
public void onClick(View v)
{
if(check.isChecked())
{
edit.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
Log.i(TAG, "Show password");
}
else
{
edit.setTransformationMethod(PasswordTransformationMethod.getInstance());
Log.i(TAG, "Hide password");
}
}
समाधान के लिए मुझे इसका श्रेय देना होगा । काश मुझे वो कुछ घंटे पहले मिल जाता!
इसे अपने लेआउट में EditText / TextView टैग में जोड़ने का प्रयास करें
android:password="true"
संपादित करें: मैं अभी आपकी पोस्ट को फिर से पढ़ता हूं, शायद आपको निर्माण के बाद ऐसा करने की आवश्यकता है। मैं नहीं देखता कि आपका स्निपेट काम क्यों नहीं करेगा।
मुझे पता है कि अपेक्षित उत्तर में है Java
। लेकिन यहाँ मेरी सलाह के 2 सेंट हमेशा देखने के सामान XML
(कम से कम बुनियादी सामान) में देखने की कोशिश करते हैं, इसलिए मैं xml
इस उपयोग के मामले को संभालने के बजाय एक विशेषता का उपयोग करने का सुझाव दूंगाjava
<EditText
android:inputType="textPassword"/>
छिपाना:
edtPassword.setInputType(InputType.TYPE_CLASS_TEXT);
edtPassword.setTransformationMethod(null);
प्रदर्शन:
edtPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
edtPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
password.setInputType(InputType.TYPE_CLASS_TEXT |
InputType.TYPE_TEXT_VARIATION_PASSWORD);
आपको इस बात से भी सावधान रहना होगा कि इस फ़ंक्शन को कॉल करने के बाद कर्सर एडिटटेक्स्ट के शुरुआती बिंदु पर जाता है, इसलिए सुनिश्चित करें कि आप कर्सर को अंतिम बिंदु पर फिर से स्थानांतरित करते हैं।
field.setInputType(InputType.TYPE_CLASS_TEXT);