【发布时间】:2016-01-11 20:33:10
【问题描述】:
我正在尝试为整个应用程序创建基本主题,我已经为 EditText、Button、TextView 等基本组件创建了自定义样式,并希望在我的应用程序中全局设置它们。
这是我的xml 代码。
<style name="AppThemeBase" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimary">@color/base_app_color</item>
<item name="colorPrimaryDark">@color/base_app_color</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="windowActionBarOverlay">true</item>
<item name="windowActionModeOverlay">true</item>
<item name="android:editTextStyle">@style/EditTextBaseStyle</item>
<item name="android:textViewStyle">@style/TextViewBaseStyle</item>
</style>
我的自定义编辑文本样式
<style name="EditTextBaseStyle" parent="Widget.AppCompat.EditText">
<item name="android:textColor">@color/base_text_color</item>
<item name="android:textSize">@dimen/text_size_edit_text</item>
<item name="android:textColorHint">@color/base_hint_color</item>
<item name="android:layout_centerHorizontal">true</item>
<item name="android:background">@drawable/edit_text_rounded_corners_bg</item>
</style>
我也尝试使用@android:style/Widget.EditText 作为父母。
<style name="TextViewBaseStyle" parent="@android:style/Widget.TextView">
<item name="android:textColor">@color/base_text_color</item>
<item name="android:textSize">@dimen/size_text_base</item>
<item name="android:layout_margin">@dimen/margin_text_view_base</item>
</style>
当然还有AndroidManifest.xml文件
<application
android:name=".application.QrApplication"
android:allowBackup="true"
android:icon="@drawable/ic_logo_green"
android:label="@string/app_name"
android:theme="@style/AppThemeBase">
<activity
android:name=".ui.activities.LoginActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name"
android:noHistory="true"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我有几个问题
- 为什么它不对每个视图(EditText 和 TextView)应用样式,如果在 xml 布局中手动设置样式,它就像一个魅力,但我无法让它在全局范围内工作
- 关于样式继承。有两种类型的继承显式或隐式或使用
.(点)和使用关键字parent作为默认主题的用户自定义样式,但是如果像<style name="SomeStyle.ParentStyle" parent="Widget.AppCompat.Button">这样组合这种类型的继承会怎样? - 样式和主题是否应用于活动内部的片段,理论上应该是因为使用了来自活动的膨胀片段上下文,即
ContextWrapper?
如果您有任何想法可能导致此类问题,请帮助解决它或至少分享您的想法。
谢谢。
【问题讨论】:
标签: android xml inheritance android-theme android-styles