AppCompat包的樣式資源

資源定義

樣式定義

com.android.support:appcompat-v7庫中,樣式主要的定義在$SDK_HOME/extras/android/v7/appcompat/res/values/themes_base.xml中,其中定義瞭如下樣式:android

  • Platform.AppCompat(android:Theme)app

  • Platform.AppCompat.Light(Platform.AppCompat)code

  • Base.V7.Theme.AppCompat(Platform.AppCompat)orm

  • Base.V7.Theme.AppCompat.Light(Platform.AppCompat.Light)xml

  • Base.Theme.AppCompat(Base.V7.Theme.AppCompat)圖片

  • Base.Theme.AppCompat.Light(Base.V7.Theme.AppCompat.Light)資源

  • 其餘如.DarkActionBar等衍生樣式get

其中對於若干的樣式定義,好比it

  • editTextBackgroundio

  • editTextColor

  • ……

其中定義了AppCompat包的各類樣式。對於但願修改默認樣式的,能夠在當前Activity的樣式中對須要修改的樣式進行覆蓋便可。好比,android.support.v7.widget.AppCompatEditText,在激活狀態下下劃線是加粗的,經過查看AppCompatEdit代碼,找到其背景是@drawable\abc_edit_text_material,此文件是一個xml資源文件,定義了一個inset集合,使用了兩張9patch圖片,經過TintManager對其進行染色,就獲得了所見的默認樣式。

若是須要修改,好比將其激活狀態下也改成一樣粗細的下劃線,能夠新建(複製)一份@drawable\abc_edit_text_material文件,其默認內容爲:

<inset xmlns:android="http://schemas.android.com/apk/res/android"
   android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
   android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
   android:insetTop="@dimen/abc_edit_text_inset_top_material"
   android:insetBottom="@dimen/abc_edit_text_inset_bottom_material">

    <selector>
        <item android:state_enabled="false"
            android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
        <item android:state_pressed="false"
            android:state_focused="false"
            android:drawable="@drawable/abc_textfield_default_mtrl_alpha"/>
        <item android:drawable="@drawable/abc_textfield_activated_mtrl_alpha"/>
    </selector>
</inset>

能夠看到在最下方是使用了@drawable/abc_textfield_activated_mtrl_alpha資源,將其改成同上的資源,在樣式文件中添加

<item name="editTextBackground">@drawable/abc_edit_text_material</item>

其中資源是你新複製修改的資源,便可。

相關文章
相關標籤/搜索