I am trying to create base theme for whole my app, I have created custom styles for base components like EditText, Button, TextView and wanna to set them globally in my app.
Here is my xml code.
<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> My custom edit text 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> I also tried to use @android:style/Widget.EditText as a parent.
<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> And of cours in AndroidManifest.xml file
<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> I have several questions
- Why it doesn't apply style for each view (EditText and TextView), if set style manually in xml layout it works like a charm, but I cannot get it working globally
- About style inheritance. There are two types of inheritance for user custom styles using
.(dot) and using keywordparentfor default themes, but what will if combine this types of inheritance like this<style name="SomeStyle.ParentStyle" parent="Widget.AppCompat.Button">? - Does styles and theme apply to fragments inside activity, theoretically it should because for inflating fragment context from activity is used which is
ContextWrapper?
Please if you have any ideas what can cause such problem, help to solve it or at least share your thoughts.
Thanks.
No comments:
Post a Comment