EditTextの色変更箇所まとめ

EditTextの下線やカーソルの色など、どう指定すればいいか毎回忘れてしまうのでメモしておきます。

# まとめ
| 変更箇所 | 指定箇所 | 説明 |
|:--:|:--|:--|
| ![2016-02-01_18_58_30_png.png](https://qiita-image-store.s3.amazonaws.com/0/15267/076331ba-20b4-71fa-15f7-204d9f00f42e.png "2016-02-01_18_58_30_png.png") | `colorControlActivated` | つまみ部分。text selection handleと言うらしい。 |
|![2016-02-01_18_54_25_png.png](https://qiita-image-store.s3.amazonaws.com/0/15267/6c2a78ed-44a9-ff37-b63c-b84a74ef7c6e.png "2016-02-01_18_54_25_png.png") | `colorControlNormal` | フォーカスが当たっていない時の下線部分。 |
| ![2016-02-01_18_54_35_png.png](https://qiita-image-store.s3.amazonaws.com/0/15267/c0cb3c9a-103e-94b1-07b5-3310d3670a07.png "2016-02-01_18_54_35_png.png") | `colorControlActivated` | フォーカスが当たってる時の下線部分。Tintが当たっていて、指定した色より少し透過がかかっていて、長押しすると指定した色になる。 |
| ![2016-02-01_18_58_02_png.png](https://qiita-image-store.s3.amazonaws.com/0/15267/b75ed54e-dfec-04c2-4bdf-eef03170e917.png "2016-02-01_18_58_02_png.png") | `android:textColorHighlight` | テキストの選択色。
| ![2016-02-01_18_57_16_png.png](https://qiita-image-store.s3.amazonaws.com/0/15267/4d0ff221-1804-bfa4-5476-ec454344108d.png "2016-02-01_18_57_16_png.png") | `android:textColorHint` | 入力前のヒント（プレースホルダー）。 |
| ![2016-02-01_18_57_33_png.png](https://qiita-image-store.s3.amazonaws.com/0/15267/8953d22d-a053-6836-819b-0ee7b008c9fa.png "2016-02-01_18_57_33_png.png") | `android:textColor` | テキストの色。 |
| ![2016-02-01_18_54_35_png.png](https://qiita-image-store.s3.amazonaws.com/0/15267/83bbfc6f-ef8b-e0e6-a3e1-8541a4017ae4.png "2016-02-01_18_54_35_png.png") | `android:textCursorDrawable` | カーソルの色。 drawableの指定ですが、色をセットすることもできます。 |
                                                                                                                                 

# コード

レイアウトxmlのEditTextはこんな感じです。AppCompatEditTextを使っていますが、EditTextでも同じです。
`style` と `app:theme` を両方指定しているのは、 `style` だけだと `colorControlNormal` と `colorControlActivated` の指定が効かないからです。
このへんは中のコードを読めていないのですが、ActivityやApplicationで指定しているテーマのスタイルが適用されてしまうようです。

```activity_main.xml
<android.support.v7.widget.AppCompatEditText
    android:id="@+id/edit_text"
    style="@style/EditTextStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="ヒント"
    app:theme="@style/EditTextStyle" />
```

styles.xmlはこんな感じです。ちなみに `android:~` のattributesはstyleではなく直接レイアウトに指定しても適用されますが、 `colorControl~` のattributesは適用されません。

```styles.xml
<style name="EditTextStyle" parent="Widget.AppCompat.EditText">
    <item name="colorControlNormal">@color/amber500</item>
    <item name="colorControlActivated">@color/pink500</item>
    <item name="android:textCursorDrawable">@color/indigo500</item>
    <item name="android:textColor">@color/orange500</item>
    <item name="android:textColorHint">@color/teal500</item>
    <item name="android:textColorHighlight">@color/purple500</item>
</style>
```

色がわかりやすいようにstyles.xmlのキャプチャを貼っておきます。

![styles_xml_-_ConferenceSched_-____work_private_conference-sched__-_Android_Studio_1_5_Beta.png](https://qiita-image-store.s3.amazonaws.com/0/15267/5c156e3e-14a2-7abe-c6bb-9016f4416606.png "styles_xml_-_ConferenceSched_-____work_private_conference-sched__-_Android_Studio_1_5_Beta.png")


EditTextのコードを読んでstyleやthemeがどう適用されていくかを追えばもう少し詳細にわかりそうですが、とりあえずこれでだいたいの色は変更できます。