[android] 모든 EditText에 일관된 스타일 설정 (예 :)

EditText내 응용 프로그램의 모든 것이 일관되게 보이 도록 노력하고 있습니다. 다음과 같이 할 수 있다는 것을 알고 있습니다.

<style name="App_EditTextStyle">
    <item name="android:background">@drawable/filled_roundededges_box_dark</item>
    <item name="android:textColor">#808080</item>
    <item name="android:layout_height">45dip</item>
</style>

그런 다음 다음 EditText을 수행 하여 특정 스타일을 만들 수 있습니다 .

<EditText ...
    style="@style/App_EditTextStyle
    ...>

그러나 이렇게하면 EditText오류가 발생하지 않더라도 지루한 애플리케이션의 모든 스타일을 개별적으로 설정하는 것을 기억해야합니다 .

이것을 테마의 일부로 만들 수있는 방법이 있습니까? 따라서이 스타일을 모든 EditText. 다음과 같은 가상의 코드 블록 :

<style name="App_Theme" parent="@android:style/Theme.Holo">
   ...
   <item name="android:EditTextSyle">@style/App_EditTextStyle</item>
   ...
<style>

그리고 내 안에 다음 AndroidManifest.xml과 같은 것이 있습니다.

<application
    ....
    android:theme="@style/App_Theme">

그리고 짜잔! 내 모든 것은 EditText각 인스턴스에 대한 스타일을 지정할 필요없이 일관된 스타일을 갖습니다.



답변

사용자 정의 테마에서 EditTextstyle (named editTextStyle:))을 가리키는 속성을 재정의하십시오 .

<style name="App_Theme" parent="@android:style/Theme.Holo">
   <item name="android:editTextStyle">@style/App_EditTextStyle</item>
</style>

확장 할 사용자 정의 스타일을 만듭니다 Widget.EditText.

<style name="App_EditTextStyle" parent="@android:style/Widget.EditText">
    <item name="android:background">@drawable/filled_roundededges_box_dark</item>
    <item name="android:textColor">#808080</item>
    <item name="android:layout_height">45dip</item>
</style>

편집하다:

훨씬 새로운 AppCompat 관련 테마를 사용하는 경우 android 접두사없이 editTextStyle 속성을 사용하십시오.

<style name="App_Theme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="editTextStyle">@style/App_EditTextStyle</item>
</style>


답변

@Luksprog 대답은 정확하지만 나를 위해 작동하지 않습니다. 몇 가지 실험 후 editTextStyle에서 android 네임 스페이스를 제거하면 작동한다는 것을 알았습니다.

<style name="App_Theme" parent="@android:style/Theme.Holo">
   <item name="editTextStyle">@style/App_EditTextStyle</item>
</style>

확장 할 사용자 정의 스타일을 만들 Widget.EditText거나 AppCompat 테마를 사용하는 경우 Widget.AppCompat.EditText:

<style name="App_EditTextStyle" parent="@android:style/Widget.EditText">
    <item name="android:background">@drawable/filled_roundededges_box_dark</item>
    <item name="android:textColor">#808080</item>
    <item name="android:layout_height">45dip</item>
</style>


답변

먼저 EditText의 스타일을 정의하십시오. 부모 스타일이android:Widget.EditText

<style name="CustomEditTextStyle" parent="android:Widget.EditText">

    <item name="android:textColor">#0F0F0F</item>
    <!-- ... More items here if needed ... -->
</style>

그 후 android:editTextStyle사용자 정의 테마 의 속성 을 재정의하십시오 . 지원 라이브러리를 사용하는 경우 속성도 재정의해야합니다 editTextStyle(android 네임 스페이스없이).

<style name="App_Theme" parent="...">
   <item name="android:editTextStyle">@style/CustomEditTextStyle</item>
   <item name="editTextStyle">@style/CustomEditTextStyle</item> <!-- For compatibility with the support library -->
</style>


답변

텍스트 색상과 같은 몇 가지 간단한 매개 변수 만 설정해야하는 경우 Android 네임 스페이스에는 편집 텍스트에 대해 별도의 스타일을 선언 할 필요없이이를 수행하는 몇 가지 매개 변수가 있습니다. 예

<style name="MyStyle" parent="android:Theme.Material.NoActionBar">
    <item name="colorPrimary">@color/black</item>
    <item name="colorPrimaryDark">@color/white</item>
    <item name="colorAccent">@color/white</item>
    <item name="android:textColor">@color/black</item>
    <item name="android:editTextColor">@color/black</item>
    <item name="android:editTextBackground">@color/black</item>
    ....
</style>


답변

<style name="App_Theme" parent="@android:style/Theme.Holo">
    <item name="android:editTextBackground">@drawable/filled_roundededges_box_dark</item>
</style>


답변