Saya menggunakan baru-baru ini dirilis Pustaka Dukungan Desain Android yang untuk menampilkan label mengambang dengan EditTexts. Tetapi saya menghadapi masalah bahwa Petunjuk pada EditText tidak ditampilkan ketika UI dirender, tetapi saya melihat Petunjuk setelah saya fokus pada EditTexts.
Tata Letak saya adalah sebagai berikut:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:id="@+id/ScrollView01"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin">
<android.support.design.widget.TextInputLayout
android:id="@+id/name_et_textinputlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin">
<EditText
android:id="@+id/FeedBackerNameET"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/feedbackname"
android:inputType="textPersonName|textCapWords" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/email_textinputlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/FeedBackerEmailET"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/feedbackemail"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<Spinner
android:id="@+id/SpinnerFeedbackType"
android:layout_width="fill_parent"
android:layout_height="48dp"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:entries="@array/feedbacktypelist"
android:prompt="@string/feedbacktype" />
<android.support.design.widget.TextInputLayout
android:id="@+id/body_textinputlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/EditTextFeedbackBody"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/feedbackbody"
android:inputType="textMultiLine|textCapSentences"
android:lines="5" />
</android.support.design.widget.TextInputLayout>
<CheckBox
android:id="@+id/CheckBoxFeedBackResponse"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:text="@string/feedbackresponse" />
<Button
android:id="@+id/ButtonSendFeedback"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:text="@string/feedbackbutton" />
</LinearLayout>
</ScrollView>
</FrameLayout>
<View
android:layout_width="match_parent"
android:layout_height="5dp"
android:background="@drawable/toolbar_shadow" />
</FrameLayout>
Saya juga mencoba memberi petunjuk untuk TextInputLayout
metode penggunaan setHint
tetapi tidak berhasil.
mNameTextInputLayout = (TextInputLayout) v.findViewById(R.id.name_et_textinputlayout);
mNameTextInputLayout.setErrorEnabled(true);
mNameTextInputLayout.setHint(feedBackerNameET.getHint());
mEmailTextInputLayout = (TextInputLayout) v.findViewById(R.id.email_textinputlayout);
mEmailTextInputLayout.setErrorEnabled(true);
mEmailTextInputLayout.setHint(feedBackerEmail.getHint());
mBodyTextInputLayout = (TextInputLayout) v.findViewById(R.id.body_textinputlayout);
mBodyTextInputLayout.setErrorEnabled(true);
mBodyTextInputLayout.setHint(feedBackBody.getHint());
android
material-design
android-design-library
Shajeel Afzal
sumber
sumber
Jawaban:
Memperbarui:
Ini adalah bug yang telah diperbaiki pada versi 22.2.1 pustaka.
Jawaban Asli:
Seperti yang disebutkan oleh @shkschneider, ini adalah bug yang diketahui . Pengguna Github @ ljubisa987 baru-baru ini memposting inti untuk solusi:
https://gist.github.com/ljubisa987/e33cd5597da07172c55d
Seperti disebutkan dalam komentar, solusi ini hanya berfungsi di Android Lollipop dan yang lebih lama. Ini tidak berfungsi pada Pratinjau Android M.
sumber
Itu adalah bug yang diketahui dari pustaka Desain Android. Itu telah diterima dan ditetapkan .
Jadi, Anda harus memperbaikinya di rilis pustaka Desain Android berikutnya.
Sementara itu, Anda dapat melihat pelacak masalah untuk perbaikan hacky yang mungkin diposting di sana, tetapi saya tidak tahu apa-apa sampai sekarang.
Dan ya, itu hanya memengaruhi Lollipop ke atas.
sumber
Ini berfungsi untuk saya di Design Library 23.1.1:
Setel warna petunjuk di atribut xml TextInputLayout:
sumber
Masalah ini telah diperbaiki dalam versi 22.2.1
sumber
Anda harus menggunakan
android.support.v7.widget.AppCompatEditText
sebagaiEditText
dan mengaturandroid:hint
seperti di bawah inisumber
Gunakan cuplikan kode ini. Pastikan aktivitas Anda adalah AppCompatActivity. Dan ketergantungan juga dengan versi terbaru
Perbarui studio android ke versi terbaru. lihat keluarannya di sini
sumber
Jika Anda menyetel petunjuk EditText secara terprogram, itu tidak akan berhasil! Anda perlu menyetel petunjuk pada TextInputLayout itu sendiri.
Berikut adalah XML jika Anda bertanya-tanya:
sumber
Masalah ini diatasi di
v23.0.1
perpustakaan desain dukungan. Saya juga memperbaruiappcompat-v7
ke23.0.1
,compileSdkVersion
ke23
&buildToolsVersion
ke23.0.1
di build.gradle .sumber
Saya memecahkan masalah saya dengan kode ini:
Kuncinya di sini adalah
bringToFront
. Ini memaksaTextInputLayout
untuk mengulang gambarnya, yang tidak sama dengan melakukaninvalidate()
. Jika Anda mencoba menampilkanTextInputLayout
on aview
yang memilikianimations
atautranistions
, Anda perlu menjalankan kode di atas di akhiranimation
atautransition
. Pastikan saja kode di atas berjalan di UIthread
.sumber
Sepertinya masalah ini muncul saat Anda menyetel onFousListener pada EditText - coba perluas EditText dan dukung beberapa onFocusListeners
sumber
Setel warna petunjuk yang kontras dengan latar belakang EditText.
<item name="android:textColorHint">#FF424242</item>
Terkait:
setHintTextColor () di EditText
Ubah warna petunjuk EditText saat menggunakan TextInputLayout
Cara mengubah warna label mengambang TextInputLayout
sumber
Masalah terpecahkan: Goto build.gradle dari aplikasi Anda dan periksa perpustakaan desain. kompilasi 'com.android.support:design:22.2.1' Seharusnya 22.2.1 atau yang lebih baru.
sumber
Masalahnya adalah warna petunjuknya. Menjadi putih saat mengetik sesuatu. Harap ubah warna petunjuk atau ubah warna latar belakang. Anda akan melihat petunjuk saat mengetik.
sumber
Ada solusi sederhana untuk ini karena ini berhasil untuk saya
Cukup tambahkan android: theme = "@ style / Base.TextAppearance.AppCompat" ke TextEditLayout dan itu akan berfungsi dan Anda dapat mengubah tema sesuai kebutuhan.
sumber
Tambahkan saja:
android:hint="your_hint"
untukTextInputLayout
.sumber
Saya menemukan sesuatu yang berbeda.
Saat mengatur gaya untuk
fragment
,Bug hilang ketika saya mencoba Gaya yang berbeda dari
"Theme_DeviceDefault_Dialog"
.Cobalah.
sumber