先介绍下修改原理:首先打开位于android.widget包下面的Button.java文件,这里有一句关键的代码如下:

public Button(Context context, AttributeSet attrs) {this(context, attrs, com.android.internal.R.attr.buttonStyle);}

其中com.android.internal.R.attr.buttonStyle就是我们修改样式的关键了,网上的教程的修改方法大都是:

<Buttonstyle="@style/ButtonStyle"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_weight="1"android:text="价格" />

也就是在对应的xml里面button控件里面编写style达到目的。
但是如果我们的app需要完全统一整个应用的button的样式,那么就需要在每一个button里面添加style。
这显然效率太低下了。

接下来打开我们项目中values文件夹下面的styles.xml文件,我们创建安卓项目的时候,会有一个默认的styles文件。
打开之后找到这段代码:

<style name="AppBaseTheme" parent="Theme.Holo.Light"><!--Theme customizations available in newer API levels can go inres/values-vXX/styles.xml, while customizations related tobackward-compatibility can go here.--></style><!-- Application theme. --><style name="AppTheme" parent="AppBaseTheme">

不保证读者的默认styles.xml和我的是一样的,不过大概是这个样子,有可能读者的最低支持是2.3、那么就没有Them.Light。
我们使用eclipse的快捷键打开这个Theme.Holo.Light。可以看到如下代码:

<style name="Theme.Holo.Light" parent="Theme.Light"><item name="colorForeground">@android:color/bright_foreground_holo_light</item><item name="colorForegroundInverse">@android:color/bright_foreground_inverse_holo_light</item><item name="colorBackground">@android:color/background_holo_light</item><item name="colorBackgroundCacheHint">@android:drawable/background_cache_hint_selector_holo_light</item><item name="disabledAlpha">0.5</item><item name="backgroundDimAmount">0.6</item>
<!--此处省略大部分中间样式--><!-- Button styles --><item name="buttonStyle">@android:style/Widget.Holo.Light.Button</item><item name="buttonStyleSmall">@android:style/Widget.Holo.Light.Button.Small</item><item name="buttonStyleInset">@android:style/Widget.Holo.Light.Button.Inset</item><item name="buttonStyleToggle">@android:style/Widget.Holo.Light.Button.Toggle</item><item name="switchStyle">@android:style/Widget.Holo.Light.CompoundButton.Switch</item><item name="selectableItemBackground">@android:drawable/item_background_holo_light</item><item name="borderlessButtonStyle">@android:style/Widget.Holo.Light.Button.Borderless</item><item name="homeAsUpIndicator">@android:drawable/ic_ab_back_holo_light</item>

从上面的代码,可以看到buttonStyle这个样式:
这个就是我们修改的关键了,如果读者有兴趣查看Holo主题的button样式是怎么编写的,可以自行查看,这里不是介绍的重点。

接下来开始定义我们自己的全局button的样式。

<resources><!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><!-- 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:buttonStyle">@style/ButtonStyle</item></style><style name="ButtonStyle" parent="@android:style/Widget.Button"><item name="android:background">@drawable/comm_button_style</item><item name="android:textColor">@android:color/holo_green_dark</item></style></resources>

我们在AppTheme 里面添加一个item,名字叫做android:buttonStyle,然后在下面编写我们要修改的butto的样式。

这里有一点需要注意的就是我们需要继承android:style/Widget.Button这个样式,因为如果不继承的话,我们就需要修改所有button的属性。而当前的示例中,我修改的只是background,其它属性我们照旧搬安卓本地主题的设置。
而且平时我们在编写界面的时候,对button设置了background之后,其实只是覆盖了系统默认button的其中一个样式而已,这点我们从button的源码可以看得到。
如果你不继承Widget.Button的话,那么出来的效果可能是面目全非的。

修改结果:

这种修改方式可以推广到其它的控件的修改,至于修改思路,可以参照上面介绍的button样式的修改方法。

原文:修改安卓默认的系统button样式,以及其它系统控件的默认样式

转载于:https://www.cnblogs.com/H-BolinBlog/p/5972077.html

Android UI 统一修改Button控件的样式,以及其它系统控件的默认样式相关推荐

  1. 修改安卓默认的系统button样式,以及其它系统控件的默认样式

    先介绍下修改原理:首先打开位于android.widget包下面的Button.java文件,这里有一句关键的代码如下: public Button(Context context, Attribut ...

  2. 你知道如何修改单选框、复选框、下拉框的默认样式吗

    介绍 HTML 原生的单选框.复选框元素样式在各个浏览器上面由用户代理默认设置样式,如果在页面上应用了其他颜色或主题时,我们通常也相应的更改这些输入框或按钮的颜色或背景,否则会出现颜色与背景或主题不融 ...

  3. android开发UI界面布局教学,android UI学习 -- 设置界面的布局(包括style的使用,selector的使用,Checkbox自定义样式,菜单项的样式)...

    最终实现效果如下图: 具体来说就是实现了checkbox自定义选中和为选择样式,菜单项根据不同位置设置不同背景. 先上整体布局文件代码: xmlns:tools="http://schema ...

  4. 【Android -- UI开发】一份 UI 开发学习指南

    思维导图 推荐资料:官方文档 六大布局 网上有人比喻的很好:布局好比是建筑里的框架,组件按照布局的要求依次排列,就组成了用于看见的漂亮界面了. 请看文章:[Android – UI 开发]六大布局 U ...

  5. android开发 修改标题栏背景_基于.NET的APP开发方式中MobileForm的使用smobiler

    样式一 一. Toolbar 1. 目标样式 我们要实现上图中的效果,需要如下的操作: 2. 修改属性 a. 修改Mobile Form的Toolbar属性 获取窗体底部工具栏,打开集合编辑器,并点击 ...

  6. php取消滑动条,小程序中button以及滚动条默认样式如何清除(代码)

    本篇文章给大家带来的内容是关于小程序中button以及滚动条默认样式如何清除(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 实现如下图所示的效果,用四个button实现: 在 ...

  7. 三分钟教你Word修改默认样式

    目录 寻找默认样式的路径 创建自己的.dotm文件 补充 多常见多模板 样式库 替换默认样式--说到底就是替换一个word默认的.dotm文件 寻找默认样式的路径 此时就会默认打开word的默认样式的 ...

  8. Android:Socket客户端开发,Android 的Socket客户端优化,Android非UI线程修改控件程序崩溃的问题

    一.Android:Socket客户端开发 创建一个工程 我们要做的是按下按键之后,去往服务器 (服务器) 或者我们自己写的服务器 ,给他发送一些预定好的东西 然后打开操作界面 然后修改一下 你要发送 ...

  9. Android 开发 -- 开发第一个安卓程序、Android UI开发(布局的创建:相对布局和线性布局、控件单位:px pt dp sp、常用控件 、常见对话框、ListView)

    文章目录 1. 开发第一个Hello World程序 1.1 开发程序 1.2 认识程序中的文件 1.3 Android程序结构 1.4 安卓程序打包 2. Android UI开发 2.1 布局的创 ...

最新文章

  1. python pandas for循环_高逼格使用Pandas加速代码,向for循环说拜拜!
  2. boost::graph模块实现Graphviz DOT 语言阅读器
  3. python数独游戏源代码_使用Python编写数独游戏自动出题程序
  4. 一篇文章带你实操代码理解盒子模型
  5. 人工智能的前景:更高智慧的体的诞生
  6. LLBL Gen 3.x 源代码追踪与解析 Type Converter 类型转换器
  7. 未能加载文件或程序集“System.Runtime.Serialization, Version=2.0.5.0, Culture=neutral,
  8. ASP.NET Core 2.1基于SignalR和Vue实时通讯
  9. 数据库中的DbUtils
  10. Leetcode每日一题:381.insert-delete-getrandom-o1-duplicates-allowed(时间插入、删除和获取随机元素-允许重复)
  11. moodle安装过程中可能出现的问题
  12. 从github安装python项目
  13. C# 抖音无水印视频下载教程,教你你如何抓取抖音无水印接口
  14. c语言求开平方标准库函数,c语言如何求平方根 C语言中开平方函数是什么?
  15. 品牌制造商做电子商务的成本结构分析
  16. QT入门之UI设计界面
  17. 微型计算机音节,二年级微机下册教案
  18. Revit二次开发手记【1】
  19. 东北林业大学计算机科学与技术考研,2021年东北林业大学计算机科学与技术(081200)硕士研究生招生信息_考研招生计划和招生人数 - 学途吧...
  20. win32俄罗斯方块c++语言 vs2012源代码,C++实现俄罗斯方块

热门文章

  1. springboot设置文件上传大小(tomcat默认1M)
  2. README 规范和项目文档规范
  3. 使用 Go module 后 VScode 智能提示不生效解决方案
  4. Git 常用操作(2)- 创建标签
  5. pytorch方法,Tensor及其基本操作_重点
  6. LeetCode简单题之到目标元素的最小距离
  7. Gitea——私有git服务器搭建详细教程
  8. cuSPARSELt开发NVIDIA Ampere结构化稀疏性
  9. 激光雷达数据到云cloud
  10. CUDA运行时 Runtime(二)