Как изменить цвет подсказки, подчеркнуть цвет текста подсказки, если редактируемый текст пуст и не сфокусирован в Android?
У меня есть два текста для редактирования. Первый - это электронная почта, а второй - поле пароля.
Когда я нажимаю кнопку входа в систему, не заполняя оба поля, цвет подсказки и подчеркивание, изменяющиеся на красный цвет в обоих полях, являются не сфокусированным состоянием.
нецелевое состояние на целевой странице, цвет должен быть синим, введите здесь описание изображения, нажимая кнопку входа без заполнения полей в нефокусированном состоянии, введите описание изображения здесь.
Это мое требование.
Я перепробовал все возможные способы достижения этого сценария.
Но я не могу контролировать сфокусированное и не сфокусированное состояние.
Пожалуйста, помогите мне решить эту проблему.
<style name="MyMaterialTheme.Base" parent="Theme.AppCompat.Light.DarkActionBar"> <item name="windowNoTitle">true</item> <item name="windowActionBar">false</item> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="colorControlActivated">@color/primary</item> <item name="colorControlHighlight">@color/colorPrimary</item> </style>
Я хочу изменить цвет подсказки, подчеркнуть цвет в несфокусированном состоянии программно.
colors.xml
<resources> <color name="primary">#1976d2</color> <color name="primary_dark">#E12929</color> <color name="primary_darker">#CC1D1D</color> <color name="accent">#000000</color> <color name="blue">#1976d2</color> <color name="black">#000000</color> <color name="lightblue">#1976d2</color> <color name="lightgray">#666666</color> </resources>
4 ответа
Попробуй это
TextInputLayout emailInput, passInput;
EditText edtEmail, edtPass;
Button btnLogin;
String hintEmail = "",hintPass="";
emailInput = (TextInputLayout) findViewById(R.id.emailInput);
passInput = (TextInputLayout) findViewById(R.id.passInput);
edtEmail = (EditText) findViewById(R.id.edtEmail);
edtPass = (EditText) findViewById(R.id.edtPass);
btnLogin = (Button) findViewById(R.id.btnLogin);
btnLogin.setOnClickListener(this);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (edtEmail.getText().toString().trim().isEmpty()) {
edtEmail.setHint("please enter Email Address ");
hintEmail = "please enter Email Address ";
edtEmail.setHintTextColor(ContextCompat.getColor(this,R.color.colorRed));
emailInput.setHint("");
}
if (edtPass.getText().toString().trim().isEmpty()) {
edtPass.setHint("please enter Password ");
hintPass = "please enter Password ";
edtPass.setHintTextColor(getResources().getColor(R.color.colorRed));
passInput.setHint("");
}
}
});
edtEmail.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
emailInput.setHint(hintEmail);
edtEmail.setHint("");
return false;
}
});
edtPass.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
passInput.setHint(hintPass);
edtPass.setHint("");
return false;
}
});
Попробуйте что-нибудь ниже, как это, для make error для редактирования текста используйтеinputLayout.setError("Enther somehting");
после подтверждения вашего состояния вы должны удалить, используя setErrorEnabled(false)
inputLayout_et = (TextInputLayout) findViewById(R.id.input_layout_newpassword);
inputLayout_et.setErrorEnabled(false);
Что-то вроде того, что вы должны попробовать
<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>