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
각 인스턴스에 대한 스타일을 지정할 필요없이 일관된 스타일을 갖습니다.
답변
사용자 정의 테마에서 EditText
style (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>