样式定义

com.android.support:appcompat-v7库中,样式主要的定义在$SDK_HOME/extras/android/v7/appcompat/res/values/themes_base.xml中,其中定义了以下样式:

  • Platform.AppCompat(android:Theme)
  • Platform.AppCompat.Light(Platform.AppCompat)
  • Base.V7.Theme.AppCompat(Platform.AppCompat)
  • Base.V7.Theme.AppCompat.Light(Platform.AppCompat.Light)
  • Base.Theme.AppCompat(Base.V7.Theme.AppCompat)
  • Base.Theme.AppCompat.Light(Base.V7.Theme.AppCompat.Light)

其他如.DarkActionBar等衍生样式
其中对于若干的样式定义,比如

  • editTextBackground
  • 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>

其中资源是你新复制修改的资源,即可。

如修改AppCompatEditText焦点时的线条粗细:
drawable下新建:
abc_edit_text_material.xml

<?xml version="1.0" encoding="utf-8"?><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_default_mtrl_alpha"/>    </selector></inset>

更多相关文章

  1. android 设置 永不休眠
  2. RadioGroup和RadioButton的使用记录
  3. Android中attr自定义属性详解
  4. android 自定义进度条
  5. Android横向时间轴实现
  6. ViewPagerIndicator使用
  7. 2011.07.11——— android 自定义toast
  8. Android显示横幅样式通知
  9. Android中自定义Dialog样式

随机推荐

  1. asp.net按路径把图片上传到sql数据库
  2. 数据库 T-SQL 里的 GO 是什么意思
  3. 由mysql-安装版 制作 mysql-免安装版
  4. 要在SQL数据库中根据身份证号码查询出性
  5. 常用的hive-sql操作命令(1)
  6. 从Visual Studio 2012访问Netezza SQL数
  7. SQL标准从审核日志问题中选择当前记录
  8. Ms sql 2005 中的bit 数据类型
  9. SQL排成树状结构
  10. 这是快/最好?选择*或选择column1、colum2