API 21 có cung cấp phương pháp sử dụng tính năng sau không:
http://www.google.com/design/spec/components/text-fields.html#text-fields-floating-labels
Tôi đang cố làm nổi các gợi ý EditText.
Cảm ơn!
API 21 có cung cấp phương pháp sử dụng tính năng sau không:
http://www.google.com/design/spec/components/text-fields.html#text-fields-floating-labels
Tôi đang cố làm nổi các gợi ý EditText.
Cảm ơn!
Câu trả lời:
Bạn cần thêm phần sau vào tệp build.gradle mô-đun của mình:
implementation 'com.google.android.material:material:1.0.0'
Và sử dụng com.google.android.material.textfield.TextInputLayout trong XML của bạn:
<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>
Gợi ý nổi EditText:
Thêm phụ thuộc bên dưới trong gradle:
compile 'com.android.support:design:22.2.0'
Trong bố cục:
<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'
.
Có, kể từ ngày 29 tháng 5 năm 2015, chức năng này hiện được cung cấp trong Thư viện hỗ trợ thiết kế Android
Thư viện này bao gồm hỗ trợ cho
Thư viện hỗ trợ Android có thể được nhập trong gradle trong các phần phụ thuộc:
compile 'com.android.support:design:22.2.0'
Nó nên được bao gồm trong GradlePlease! Và làm ví dụ để sử dụng nó:
<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, người chỉnh sửa có thể không hiểu rằng AutoCompleteTextView được phép trong TextInputLayout.
Android không cung cấp một phương thức gốc. Cũng không phải AppCompat.
Hãy thử thư viện này: https://github.com/rengwuxian/MaterialEditText
Đây có thể là những gì bạn muốn.
Nhập các Thư viện Hỗ trợ, Trong tệp build.gradle của dự án, hãy thêm các dòng sau vào phần phụ thuộc của dự án:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:design:22.2.0'
compile 'com.android.support:appcompat-v7:22.2.0'
}
Sử dụng TextInputLayout sau trong Bố cục giao diện người dùng của bạn:
<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>
Hơn nữa, hãy gọi setHint trên TextInputLayout ngay sau lệnh gọi setContentView bởi vì, để tạo hiệu ứng cho nhãn nổi, bạn chỉ cần đặt một gợi ý, sử dụng phương thức setHint.
final TextInputLayout usernameWrapper = (TextInputLayout) findViewById(R.id.usernameWrapper);
usernameWrapper.setHint("Username");
setHint()
. Nó hoạt động với gợi ý được đặt trên EditText
xml trong bố cục.
Đề xuất của @ andruboy về https://gist.github.com/chrisbanes/11247418 có lẽ là đặt cược tốt nhất cho bạn.
https://github.com/thebnich/FloatingHintEditText loại hoạt động với appcompat-v7 v21.0.0, nhưng vì v21.0.0 không hỗ trợ màu nhấn với các lớp con của EditText
, phần gạch dưới của FloatingHintEditText
sẽ là màu đen hoặc trắng liền khối mặc định. Ngoài ra, phần đệm không được tối ưu hóa cho kiểu Material EditText
, vì vậy bạn có thể cần phải điều chỉnh nó.
Không, không. Tôi mong đợi điều này trong một bản phát hành api trong tương lai, nhưng hiện tại chúng tôi đang gặp khó khăn với EditText. Một tùy chọn khác là thư viện này:
https://github.com/marvinlabs/android-floatinglabel-widgets
Để sử dụng InputTextLayout một cách dễ dàng hơn, tôi đã tạo thư viện này để cắt mã XML của bạn xuống còn một nửa, đồng thời cung cấp cho bạn khả năng đặt thông báo lỗi cũng như thông báo gợi ý và một cách dễ dàng để thực hiện. xác nhận. https://github.com/TeleClinic/SmartEditText
Chỉ cần thêm
compile 'com.github.TeleClinic:SmartEditText:0.1.0'
Sau đó, bạn có thể làm một cái gì đó như sau:
<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.*" />
Sử dụng TextInputLayout
được cung cấp bởi Thư viện Thành phần Vật liệu :
<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>