android style的继承方式 点(.)和parent

本文探讨了如何通过继承机制在Android中定义新的样式,包括两种主要的继承方式:直接继承系统样式和继承自定义样式。详细解释了样式继承的过程,并通过实例展示了如何创建子样式来扩展和修改现有样式。

一.概述

    通过继承机制,可以利用已有的style来定义新的style。所定义的新的style型不仅拥有新定义的item,而且还同时拥有旧的item。我们称已存在的用来派生新的style为父style。由新定义的style,又称为子style。    比如:

   

<style name="pickprof_guide_text">
        <item name="android:textSize">16.0sp</item>
        <item name="android:textColor">#ff333333</item>
</style>
<style name="pickprof_guide_text_small" parent="@style/pickprof_guide_text">
        <item name="android:textSize">13.0sp</item>       
</style>

二、两种继承方式

    方式一:通过parent属性用来继承android已经定义好的style。例如:      

 <style name="XDialog" parent="android:Theme.Dialog">
        <item name="android:windowBackground">@drawable/pop_frame</item>
 </style>           
  方式二:如果要继承自定义的style,不需要通过parent属性,只要style的name以需要继承的style的name开始后跟新的style的name,中间用“.”隔开。注意:这种方式只适用与自定义的style继承。例如:  

 <!-- Base style for animations.  This style specifies no animations. -->
    <style name="Animation" />
 <!-- Standard animations for a non-full-screen window or activity. -->
    <style name="Animation.Dialog">
        <item name="windowEnterAnimation">@anim/dialog_enter</item>
        <item name="windowExitAnimation">@anim/dialog_exit</item>
    </style>


<?xml version="1.0" encoding="utf-8"?> <resources> <style name="Base.Widget.AppCompat.Spinner.Underlined" parent="@android:style/Widget.Material.Spinner.Underlined" /> <style name="Base.Theme.AppCompat" parent="@style/Base.V23.Theme.AppCompat" /> <style name="Base.Theme.AppCompat.Light" parent="@style/Base.V23.Theme.AppCompat.Light" /> <style name="Base.Widget.AppCompat.Button.Borderless.Colored" parent="@android:style/Widget.Material.Button.Borderless.Colored" /> <style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Menu" parent="@android:style/TextAppearance.Material.Widget.ActionBar.Menu" /> <style name="Base.TextAppearance.AppCompat.Widget.Button.Inverse" parent="@android:style/WindowTitle" /> <style name="Base.Widget.AppCompat.Button.Colored" parent="@android:style/WindowTitleBackground" /> <style name="Base.Widget.AppCompat.RatingBar.Indicator" parent="@android:style/Widget.Material.RatingBar.Indicator" /> <style name="Base.Widget.AppCompat.RatingBar.Small" parent="@android:style/Widget.Material.RatingBar.Small" /> <style name="Base.V23.Theme.AppCompat" parent="@style/Base.V22.Theme.AppCompat"> <item name="actionBarItemBackground">?android:actionBarItemBackground</item> <item name="actionMenuTextAppearance">?android:actionMenuTextAppearance</item> <item name="actionMenuTextColor">?android:actionMenuTextColor</item> <item name="controlBackground">@drawable/abc_control_background_material</item> <item name="ratingBarStyleIndicator">?android:ratingBarStyleIndicator</item> <item name="ratingBarStyleSmall">?android:ratingBarStyleSmall</item> </style> <style name="Base.V23.Theme.AppCompat.Light" parent="@style/Base.V22.Theme.AppCompat.Light"> <item name="actionBarItemBackground">?android:actionBarItemBackground</item> <item name="actionMenuTextAppearance">?android:actionMenuTextAppearance</item> <item name="actionMenuTextColor">?android:actionMenuTextColor</item> <item name="controlBackground">@drawable/abc_control_background_material</item> <item name="ratingBarStyleIndicator">?android:ratingBarStyleIndicator</item> <item name="ratingBarStyleSmall">?android:ratingBarStyleSmall</item> </style> </resources>
最新发布
07-19
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值