2016-03-02 53 views
2

我正在使用EditTextTextInputLayout。如果EditText被禁用,我只想更改TextInputLayout的浮動提示顏色。我試着用選擇器它不工作。如果EditText inside被禁用,如何更改TextInputLayout的浮動提示顏色

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_enabled="false" android:textColor="@color/darkGray" /> 
    <item android:state_pressed="false" android:state_focused="false" android:textColor="@color/lightGray"/> 
</selector> 
+1

你有沒有嘗試過[setHintTextAppearance](http://developer.android.com/reference/android/support/design/widget/TextInputLayout.html#setHintTextAppearance(int)) – NamNH

回答

7

有一個在TextInputLayout類稱爲setHintTextAppearance(int styleId)一個方法。您可以使用此方法設置差異顏色,以根據啓用/禁用狀態提示文本。

例子:

//for disabled editText 
mEditText.setEnabled(false); 
mTextInoutLayout.setHintTextAppearance(R.styles.CustomHintDisabled); 

//for enablededitText 
mEditText.setEnabled(true); 
mTextInoutLayout.setHintTextAppearance(R.styles.CustomHintEnabled); 

而在你styles.xml

<style name="CustomHintDisabled" parent="YourBaseTheme.TextAppearance"> 
    <item name="textColor">@color/gray</item> 
</style> 

<style name="CustomHintEnabled" parent="YourBaseTheme.TextAppearance"> 
    <item name="textColor">@color/black</item> 
</style> 
0

你必須定義的android:在應用程序中的主題textColorHint:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primary_dark</item> 
    <item name="colorAccent">@color/accent</item> 

    <item name="android:textColorHint">@color/secondary_text</item> 
</style> 

希望這對你的作品。

2

如果您想更改相同顏色的每個TextInputLayout的提示,您可以使用以下代碼將其從style更改爲相同顏色。

<style name="income" parent="TextAppearance.AppCompat"> 
     <item name="android:textColor">@color/green</item> 
     <item name="android:textColorHint">@color/green</item> 
     <item name="colorAccent">@color/green</item> 
     <item name="colorControlNormal">@color/green</item> 
     <item name="colorControlActivated">@color/green</item> 
     <item name="colorControlHighlight">@color/green</item> 
     <item name="android:textColorHighlight">@color/green</item> 
    </style> 

這裏我已經使用這個代碼只有一個TextInputLayout和選擇時,未選擇的也已經改變了它的提示顏色,文本顏色,textinputlayout的顏色。

<android.support.design.widget.TextInputLayout 
       android:id="@+id/input_income" 
       style="@style/income" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/input_days" 
       android:layout_margin="10dp" 
       android:hint="Enter Monthly Take Home Income" 
       android:textColorHint="#18c418" 
       android:theme="@style/income" 
       app:hintAnimationEnabled="true"> 

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

使用android:theme對於將其應用於棒棒糖及以上是重要的。

2

執行以下步驟: - 1.添加這種風格到您的styles.xml

<style name="FloatingLabel" parent="@android:style/TextAppearance"> 
    <item name="android:textColor">@color/theme</item> 
    <item name="android:textSize">12sp</item> 
</style> 

2.使用它像波紋管

<android.support.design.widget.TextInputLayout 
        android:id="@+id/loginPassLayout" 
        android:layout_width="match_parent" 
        android:layout_height="match_parent" 
        android:layout_centerHorizontal="true" 
        android:layout_toRightOf="@+id/user" 
        android:textColorHint="@color/white" 
        foo:hintTextAppearance="@style/FloatingLabel"> 

        <com.app.Widget.EditTextPlus 
         android:id="@+id/edt_email" 
         android:layout_width="match_parent" 
         android:layout_height="match_parent" 
         android:layout_centerVertical="true" 
         android:layout_marginLeft="5dp" 
         android:background="@android:color/transparent" 
         android:hint="Email" 
         android:inputType="textEmailAddress" 
         android:maxLength="30" 
         android:maxLines="1" 
         android:paddingLeft="10dp" 
         android:text="" 
         android:textColor="@color/white" 
         android:textColorHint="@color/white" 
         android:textSize="15sp"/> 
       </android.support.design.widget.TextInputLayout> 
0

您可以設置主題在你的TextInputLayout

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

    <EditText 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:hint="First Name" 
     /> 

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

<style name="TextLabel" parent="TextAppearance.AppCompat"> 
    <!-- Hint color and label color in FALSE state --> 
    <item name="android:textColorHint">@color/colorHint</item> 
    <item name="android:textSize">16sp</item> 

    <item name="colorAccent">@color/colorAccent</item> 
    <item name="colorControlNormal">@color/colorNormal</item> 
    <item name="colorControlActivated">@color/colorActivated</item> 
</style> 

對於其他EditTextlayout它將從您應用中定義的colorAccent中挑選顏色離子主題。

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

希望它能幫助你。

2

嘗試應用程序:hintTextAppearance在您的android.support.design.widget.TextInputLayout。通過定義app:hintTextAppearance的樣式,您還可以簡單地設置浮動標籤的顏色。 在styles.xml:

<style name="CustomTextAppearance" parent="@android:style/TextAppearance"> 
<item name="android:textSize">16sp</item> 
<item name="android:textColor">@color/colorAccent</item> 

,並在您TextInputLayout:

<android.support.design.widget.TextInputLayout 
android:id="@+id/lyt_goal" 
style="@style/CustomTextInput" 
app:hintTextAppearance="@style/CustomTextAppearance"> 

<android.support.v7.widget.AppCompatEditText 
    android:id="@+id/edt_goal" 
    style="@style/CustomEditText" 
    android:hint="@string/str_goal" /> 

希望這會幫助你。