woshidan's blog

そんなことよりコードにダイブ。

AndroidのTextInputLayoutの色をカスタマイズする

うーん、思ったより量が多かったので分割。 説明が面倒だったので、わざと効いているのが目立つ色とサイズにしています

コード

<!-- レイアウト -->
<android.support.design.widget.TextInputLayout
    android:id="@+id/text_input_layout"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    app:theme="@style/AppTheme.Design.TextInputLayout"
    app:hintTextAppearance="@style/AppTheme.Design.TextAppearance.Design.Hint"
    app:errorTextAppearance="@style/AppTheme.Design.TextAppearance.Design.Error"
    >
    <EditText
        android:id="@+id/userid"
        android:textSize="20sp"
        android:textColorHint="#00cccc" <!-- TextInputLayoutの色指定優先=効かない -->
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#0000cc"
        android:hint="TextInputLayout"/>

</android.support.design.widget.TextInputLayout>
<!-- スタイル -->
<!-- TextInputLayoutのスタイル -->
<style name="AppTheme.Design.TextInputLayout" parent="Widget.Design.TextInputLayout">
    <item name="android:textColorHint">#cccc00</item><!-- 何も入力してないとき入力フォーム内のHintの色 -->
    <item name="colorControlNormal">#cccccc</item><!-- 通常時EditTextの下線 -->
    <item name="colorControlActivated">#cc0000</item><!-- フォーカス時の下線の色 -->
</style>

<!-- hintのスタイル -->
<style name="AppTheme.Design.TextAppearance.Design.Hint" parent="TextAppearance.AppCompat.Caption">
    <item name="android:textSize">8sp</item><!-- 上の方のhintの表示サイズ -->
    <item name="android:textColor">#FFcc00</item><!--  上の方のhintの表示の色 -->
</style>

<!-- エラーのスタイル -->
<style name="AppTheme.Design.TextAppearance.Design.Error" parent="TextAppearance.AppCompat.Caption">
    <item name="android:textSize">20sp</item><!-- errorの表示サイズ -->
    <item name="android:textColor">#ff00ff</item><!--  errorの表示の色.error時の下線の色でもある -->
</style>

表示

f:id:woshidan:20151115160327g:plain