今日小结 4.30


1.style

一般是把多种属性(item)封装成一个类型(style),方便复用

比如,在style.xml里看到了 

   <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textColorPrimary">@color/primary_text_material_light</item>

    </style>

在AppTheme定义了整个应用的主题,在AndroidManifest中得到调用:

   <application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

在style里定义各种属性的好处是

(1)可以继承父类,并且根据自身需要添加或修改,从而实现多种属性

(2)简化调用处表达,把具体属性定义统一放到一个文件里(style.xml)方便后期维护

比如在Toolbar控件中,调用了popupTheme

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar_activity_main"
        android:background="@color/colorPrimary"
        app:titleTextColor="@android:color/primary_text_dark"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="?attr/actionBarSize"
        app:popupTheme="@style/AppTheme.PopupMenu"
        />

在style里,再来定义这个popupTheme的具体属性:

    <style name="AppTheme.PopupMenu" parent="Base.Widget.AppCompat.Light.PopupMenu">
        <item name="overlapAnchor">false</item>
        <item name="android:dropDownWidth">wrap_content</item>
        <item name="android:paddingRight">5dp</item>
        <item name="android:dropDownVerticalOffset">28dp</item>
        <item name="android:dropDownHorizontalOffset">0dip</item>
    </style>
原文地址:https://www.cnblogs.com/Chongger/p/5448336.html