-4

当它未聚焦时,我需要动态更改提示颜色属性。 是否可以动态更改提示颜色(未处于聚焦状态)。如何更改提示颜色属性动态时,其未解冻状态?

实际设计

enter image description here

和我的XML

enter image description here

我不能提示颜色属性以编程方式更改时,它是重点不突出。 我被卡住了。 可以做吗? 请帮帮我。 这里是我的代码 -

  btnSignUp.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       final String email = emailEditText.getText().toString(); 
       final String pass = passEditText.getText().toString(); 
       if (email.isEmpty()) { 
        inputLayoutEmail.setHint("email is required to login"); 
        inputLayoutEmail.setHintTextAppearance(R.style.EditTextLayout); 
        inputLayoutEmail.setError(" "); 
        emailEditText.setHintTextColor(getResources().getColor(R.color.primary_dark)); 

       } 
       if (pass.isEmpty()) { 
        inputLayoutPassword.setHint("password is required to login"); 
        passEditText.setHintTextColor(getResources().getColor(R.color.primary_dark)); 

        inputLayoutPassword.setHintTextAppearance(R.style.EditTextLayout); 
        inputLayoutPassword.setError(" "); 
        inputLayoutPassword.clearFocus(); 
        passEditText.setHint("Password is required to login"); 
        passEditText.setHintTextColor(Color.RED); 
       } 

回答

0

使用此代码,这可能会帮助你。

button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       if (editText1.getText().toString().length() == 0) { 
        editText1.setHintTextColor(Color.RED); 
       } 
       if (editText2.getText().toString().length() == 0) { 
        editText2.setHintTextColor(Color.RED); 
       } 
      } 
     }); 
+0

我需要改变对焦状态..不是聚焦状态.. –

+0

你需要监听当重点从edittext丢失? –

+0

当我点击登录没有填充任何领域,在这种情况下,这两个领域的提示颜色将改变。这里没有给任何焦点。 –

0
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View view, boolean b) { 
      if (!b) { 
     editText.setHintTextColor(getResources().getColor(R.color.red)); 
      } else { 
      // set which color you want when edittext is focused 
     } 
    }); 

或者您也可以使用主题还设置颜色

<style name="InputLayoutTheme" parent="Widget.Design.TextInputLayout"> 
    // Whenever input layout is un-focused, below is the color for label 
    <item name="android:textColorHint">@color/dark_gray</item> 
    // Whenever input layout is un-focused, below is the underline color 
    <item name="colorControlNormal">@color/dark_gray</item> 
    <!-- Whenever input layout is focused, below is the color for label, cursor & underline--> 
    <item name="colorControlActivated">@color/button_text_blue2</item> 
</style> 
+0

...当我点击登录没有填写任何领域,在这种情况下,两个领域的提示颜色将改变。这里没有给任何焦点。 –

+0

添加此样式到样式文件

+0

组以下参数来为textInput布局 机器人:theme =“@ style/InputLayoutTheme” app:errorEnabled =“true” app:errorTextAppearance =“@ style/ErrorTextAppearance” –

0

请试试这个代码。 当您单击登录并且场景为空时,它将提示文本颜色更改为红色。 当您点击在edittext中写入任何内容时,它会将提示文本颜色更改为黑色。 希望帮助..

这里是我的活动 -

public class Main2Activity extends AppCompatActivity implements View.OnFocusChangeListener{ 

    EditText emailEditText, passEditText; 
    Button btnSignUp; 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.amin); 

     emailEditText = (EditText) findViewById(R.id.edt1); 
     passEditText = (EditText) findViewById(R.id.edt2); 
     btnSignUp = (Button) findViewById(R.id.btnSignUp); 

     emailEditText.setOnFocusChangeListener(this); 
     passEditText.setOnFocusChangeListener(this); 
     btnSignUp.setOnFocusChangeListener(this); 

     btnSignUp.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 


       final String email = emailEditText.getText().toString(); 
       final String pass = passEditText.getText().toString(); 
       if (email.isEmpty()) { 

        emailEditText.setHintTextColor(Color.RED); 

       } 
       if (pass.isEmpty()) { 

        passEditText.setHintTextColor(Color.RED); 

        passEditText.setHint("Password is required to login"); 
        passEditText.setHintTextColor(Color.RED); 
       } 
      } 
     }); 
    } 

    @Override 
    public void onFocusChange(View v, boolean hasFocus) { 
      if(v instanceof EditText) 
      { 
       ((EditText)v).setHintTextColor(Color.BLACK); 
       v.requestLayout(); 
       v.refreshDrawableState(); 

      } 
    } 
} 

和我的XML -

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <EditText 
     android:id="@+id/edt1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="PLease enter Id" 
     android:focusable="true" 
     android:focusableInTouchMode="true" 
     android:textColor="@color/black"/> 

    <EditText 
     android:id="@+id/edt2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="PLease enter Password" 
     android:focusable="true" 
     android:focusableInTouchMode="true" 
     android:textColor="@color/black" /> 


    <Button 
     android:id="@+id/btnSignUp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Login" 
     /> 
</LinearLayout>