क्या एपीआई 21 निम्नलिखित सुविधा का उपयोग करने के लिए एक विधि प्रदान करता है:
http://www.google.com/design/spec/components/text-fields.html#text-fields-floating-labels
मैं EditText संकेत तैरने की कोशिश कर रहा हूँ।
धन्यवाद!
क्या एपीआई 21 निम्नलिखित सुविधा का उपयोग करने के लिए एक विधि प्रदान करता है:
http://www.google.com/design/spec/components/text-fields.html#text-fields-floating-labels
मैं EditText संकेत तैरने की कोशिश कर रहा हूँ।
धन्यवाद!
जवाबों:
आपको अपने मॉड्यूल build.gradle फ़ाइल में निम्न जोड़ना होगा:
implementation 'com.google.android.material:material:1.0.0'
और अपने XML में com.google.android.material.textfield.TextInputLayout का उपयोग करें:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/text_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/my_hint">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="UserName"/>
</com.google.android.material.textfield.TextInputLayout>
फ़्लोटिंग संकेत
प्रवणता में नीचे निर्भरता जोड़ें:
compile 'com.android.support:design:22.2.0'
लेआउट में:
<android.support.design.widget.TextInputLayout
android:id="@+id/text_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="UserName"/>
</android.support.design.widget.TextInputLayout>
22.2.0
implementation 'com.google.android.material:material:1.0.0-rc01'
।
हां, 29 मई, 2015 तक यह कार्यक्षमता अब Android डिज़ाइन समर्थन लाइब्रेरी में प्रदान की गई है
इस लाइब्रेरी के लिए समर्थन शामिल है
एंड्रॉइड सपोर्ट लाइब्रेरी को निर्भरता में ग्रेडेल के भीतर आयात किया जा सकता है:
compile 'com.android.support:design:22.2.0'
यह GradlePlease के भीतर शामिल किया जाना चाहिए! और इसका उपयोग करने के लिए एक उदाहरण के रूप में:
<android.support.design.widget.TextInputLayout
android:id="@+id/to_text_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<AutoCompleteTextView
android:id="@+id/autoCompleteTextViewTo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="To"
android:layout_marginTop="45dp"
/>
</android.support.design.widget.TextInputLayout>
Btw, एडिटर यह नहीं समझ सकता है कि TextInputLayout के भीतर AutoCompleteTextView की अनुमति है।
Android ने मूल विधि प्रदान नहीं की है। और न ही AppCompat।
इस लाइब्रेरी को आज़माएं: https://github.com/rengwuxian/MaterialEditText
यह वही हो सकता है जो आप चाहते हैं।
समर्थन लाइब्रेरीज़ को आयात करें, अपने प्रोजेक्ट की बिल्ड.ग्रेड फ़ाइल में, प्रोजेक्ट की निर्भरता में निम्न पंक्तियाँ जोड़ें:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:design:22.2.0'
compile 'com.android.support:appcompat-v7:22.2.0'
}
अपने UI लेआउट में TextInputLayout का उपयोग करें:
<android.support.design.widget.TextInputLayout
android:id="@+id/usernameWrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="Username"/>
</android.support.design.widget.TextInputLayout>
से पहले, TextInputLayout पर setHint को कॉल करें, इसके बाद setContentView कॉल करें, क्योंकि फ़्लोटिंग लेबल को चेतन करने के लिए, आपको बस एक हिंट सेट करने की ज़रूरत है, सेटहिंट विधि का उपयोग करके।
final TextInputLayout usernameWrapper = (TextInputLayout) findViewById(R.id.usernameWrapper);
usernameWrapper.setHint("Username");
setHint()
। यह EditText
लेआउट xml में संकेत के साथ काम करता है ।
@ @ruboy का सुझाव https://gist.github.com/chrisbanes/11247418 शायद आपका सबसे अच्छा दांव है।
https://github.com/thebnich/FloatingHintEditText appcompat-v7 v21.0.0 के साथ काम करता है, लेकिन चूंकि v21.0.0 उपवर्गों के साथ उच्चारण रंगों का समर्थन नहीं करता है EditText
, इसलिए अंडरलाइन FloatingHintEditText
डिफ़ॉल्ट डिफ़ॉल्ट काले या सफेद रंग का होगा। इसके अलावा पैडिंग सामग्री शैली के लिए अनुकूलित नहीं है EditText
, इसलिए आपको इसे समायोजित करने की आवश्यकता हो सकती है।
नहीं, यह नहीं है। मैं भविष्य के एपीआई रिलीज में इसकी उम्मीद करूंगा, लेकिन अब हम एडिटटेक्स्ट के साथ फंस गए हैं। एक अन्य विकल्प यह पुस्तकालय है:
https://github.com/marvinlabs/android-floatinglabel-widgets
InputTextLayout का उपयोग करने के एक आसान तरीके के लिए, मैंने यह लाइब्रेरी बनाई है जो आपके XML कोड को आधे से भी कम कर देता है, और आपको एक त्रुटि संदेश के साथ-साथ एक संकेत संदेश और आपकी करने का एक आसान तरीका भी प्रदान करता है। सत्यापन। https://github.com/TeleClinic/SmartEditText
सीधे शब्दों में कहें
compile 'com.github.TeleClinic:SmartEditText:0.1.0'
तो आप इस तरह से कुछ कर सकते हैं:
<com.teleclinic.kabdo.smartmaterialedittext.CustomViews.SmartEditText
android:id="@+id/emailSmartEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:setLabel="Email"
app:setMandatoryErrorMsg="Mandatory field"
app:setRegexErrorMsg="Wrong email format"
app:setRegexType="EMAIL_VALIDATION" />
<com.teleclinic.kabdo.smartmaterialedittext.CustomViews.SmartEditText
android:id="@+id/passwordSmartEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:setLabel="Password"
app:setMandatoryErrorMsg="Mandatory field"
app:setPasswordField="true"
app:setRegexErrorMsg="Weak password"
app:setRegexType="MEDIUM_PASSWORD_VALIDATION" />
<com.teleclinic.kabdo.smartmaterialedittext.CustomViews.SmartEditText
android:id="@+id/ageSmartEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:setLabel="Age"
app:setMandatory="false"
app:setRegexErrorMsg="Is that really your age :D?"
app:setRegexString=".*\\d.*" />
सामग्री घटक लाइब्रेरीTextInputLayout
द्वारा प्रदान किए गए का उपयोग करें :
<com.google.android.material.textfield.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Label">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="match_parent" />
</com.google.android.material.textfield.TextInputLayout>