developer tip

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

copycodes 2020. 10. 11. 10:46
반응형

모든 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>

After that, override the attribute android:editTextStyle in your custom theme. Be aware, if you are using the support library, you will also need to override the attribute editTextStyle (without the android namespace).

<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>

If you just need to set a few simple parameters, like text color, the Android namespace has a few parameters that will do that without the need to declare a separate style for the edit text. Eg

<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>

참고URL : https://stackoverflow.com/questions/10903647/set-a-consistent-style-to-all-edittext-for-e-g

반응형