这有可能改变android中提示的一部分颜色吗?

时间:2018-01-24 12:08:04

标签: android android-layout

我有一个AppCompatEditText内部TextInputLayout并从字符串资源中设置提示。

<string name="company_name">Companyname <font fgcolor='#FF0000'>&#42;</font></string>

恒星的颜色不会变为红色。

这就是我所得到的。

enter image description here

我想要的(在photoshop中编辑)

enter image description here

我尝试使用带有图像的drawableEnd,但AppCompatEditText的宽度为&#34; match_parent&#34;。所以它最后显示出来。我不是那样的。有没有办法做到这一点。

更新:

试过这个:

company_name.setHint(Html.fromHtml("<small><i>" + "Text Hint Here" + "</i><font color=#FF0000>&#42;</font></small>"));

这就是我得到的。旧的提示不会被新的提示所取代。这两个提示都在显示。

enter image description here

5 个答案:

答案 0 :(得分:2)

change edittext hint color :-
 android:backgroundTint="@color/colorAccent"
TextInputLayout
 android:textColorHint="#707E90"
....................................................
    <android.support.design.widget.TextInputLayout
        android:id="@+id/txt_usemail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColorHint="#707E90">

        <EditText
            android:id="@+id/et_usemaill"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="10dp"
            android:backgroundTint="@color/colorAccent"
            android:hint="@string/res_email"
            android:inputType="textEmailAddress"
            android:textColor="@color/textcolor" />

    </android.support.design.widget.TextInputLayout>
.............................................................

答案 1 :(得分:1)

在某种程度上可能......

这是我的发现

    Html/Spannable Floating文字上的
  1. TextInputEditText无效。

    txt_usemail.setHint(Html.fromHtml("<font color=\"#707E90\">" + "Companyname" + "</font>" + "<font color=\"#FF0000\">" + "*" + "</font>"));

  2. 1

    1. Html/Spannable TextInputLayout提示无效。

      txt_usemail.setHint(Html.fromHtml("<font color=\"#707E90\">" + "Companyname" + "</font>" + "<font color=\"#FF0000\">" + "*" + "</font>"));

    2. 2

      1. Html/Spannable TextInputEditText正在运作。

        et_usemaill.setHint(Html.fromHtml("<font color=\"#707E90\">" + "Companyname" + "</font>" + "<font color=\"#FF0000\">" + "*" + "</font>"));

      2. 3

        现在,问题在于setHint()上的TextInputEditText(如第3点),那么Floating文字将无效。

        enter image description here

        要使用Floating文字,我们需要setHint()上的TextInputLayout

        以下是使用EditText焦点/散焦

        的技巧
        final TextInputLayout txt_usemail = findViewById(R.id.txt_usemail);
        final TextInputEditText et_usemaill = findViewById(R.id.et_usemaill);
        
        
        et_usemaill.setHint(Html.fromHtml("<font color=\"#707E90\">" + "Companyname" + "</font>" + "<font color=\"#FF0000\">" + "*" + "</font>"));
        
        et_usemaill.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View view, boolean hasFocus) {
        
                    if (et_usemaill.getText().toString().equals("")) {
        
                        if (hasFocus) {
                            et_usemaill.setHint(null);
                            txt_usemail.setHint(Html.fromHtml("<font color=\"#c5c5c5\">" + "Companyname" + "</font>" + "<font color=\"#FF0000\">" + "*" + "</font>"));
                        } else {
                            // Remove Glitch/Smooth Animation
                            new Handler().postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    txt_usemail.setHint(null);
                                    et_usemaill.setHint(Html.fromHtml("<font color=\"#707E90\">" + "Companyname" + "</font>" + "<font color=\"#FF0000\">" + "*" + "</font>"));
                                }
                            }, 200);
                        }
                    }
        
                }
            });
        

        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <item name="colorControlNormal">#c5c5c5</item>
            <item name="colorControlActivated">#c5c5c5</item>
            <item name="colorControlHighlight">#c5c5c5</item>
        </style>
        
        <style name="TextAppearence.App.TextInputLayout" parent="@android:style/TextAppearance">
            <item name="android:textColor">@android:color/holo_red_dark</item>
            <item name="android:textSize">12sp</item>
        </style>
        

        布局

        <android.support.design.widget.TextInputLayout
            android:layout_marginTop="56dp"
            android:id="@+id/txt_usemail"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout"
            android:textColorHint="@android:color/holo_red_dark"
            >
        
            <android.support.design.widget.TextInputEditText
                android:id="@+id/et_usemaill"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginTop="10dp"
                android:inputType="textEmailAddress"
                android:textColor="@color/white" />
        
        </android.support.design.widget.TextInputLayout>
        

        结果 -

        enter image description here

答案 2 :(得分:0)

是的,可以更改TextInputLayout的提示颜色。喜欢这个

<android.support.design.widget.TextInputLayout
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:theme="@style/textinputlayout">

 <android.support.v7.widget.AppCompatEditText
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:hint="Company Name"
     android:id="@+id/edit_id"/>

</android.support.design.widget.TextInputLayout>

在样式文件夹

中创建textinputlayout文件
<style name="TextLabel" parent="TextAppearance.AppCompat">
  <!-- Hint color and label color in FALSE state -->
  <item name="android:textColorHint">@color/Color Name</item> 
  <item name="android:textSize">20sp</item>
  <!-- Label color in TRUE state and bar color FALSE and TRUE State -->
  <item name="colorAccent">@color/Color Name</item>
  <item name="colorControlNormal">@color/Color Name</item>
  <item name="colorControlActivated">@color/Color Name</item>
</style>

设置为应用程序的主题,它只能突出显示状态

 <item name="colorAccent">@color/Color Name</item>

注意:api 16或更低版本不支持此解决方案。为此,您需要这样做:

要更改底线颜色,您可以在应用主题中使用它:

<item name="colorControlNormal">#c5c5c5</item>
<item name="colorControlActivated">@color/accent</item>
<item name="colorControlHighlight">@color/accent</item> 

更改浮动标签颜色

<style name="TextAppearence.App.TextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/main_color</item>

并使用它:

<android.support.design.widget.TextInputLayout
...
 app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout"
 android:textColorHint="#c1c2c4">

希望这有帮助。

答案 3 :(得分:0)

尝试使用名为Spanny的库。借助于此,我们可以包含并可以自定义具有不同颜色,字体大小,字体样式和更多内容的每个字符。它可以用来设置提示以及设置文本。

这是图书馆Spanny

的链接
Spanny spanny = new Spanny("Underline text", new UnderlineSpan())
            .append("Company Name ")
            .append("*", new ForegroundColorSpan(Color.RED));

您可以通过以下方式设置该Spanny对象:

textView.setHint(spanny);

或者这个:

textView.setText(spanny);

希望它有所帮助。

答案 4 :(得分:0)

只需为
设置提示 --- <com.google.android.material.textfield.TextInputLayout>
包含
------ <EditText> 在您的代码中

代码(科特琳):

your_til_id.hint = Html.fromHtml(getString(R.string.your_hint_str)+ "<font color='red'>*</font>")

布局:

<com.google.android.material.textfield.TextInputLayout 
    android:id="@+id/your_til_id"
    android:layout_width="0dp"
    android:layout_height="wrap_content">
    <EditText 
        android:id="@+id/your_et_id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</com.google.android.material.textfield.TextInputLayout>