Android UI 统一修改Button控件的样式,以及其它系统控件的默认样式
先介绍下修改原理:首先打开位于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控件的样式,以及其它系统控件的默认样式相关推荐
- 修改安卓默认的系统button样式,以及其它系统控件的默认样式
先介绍下修改原理:首先打开位于android.widget包下面的Button.java文件,这里有一句关键的代码如下: public Button(Context context, Attribut ...
- 你知道如何修改单选框、复选框、下拉框的默认样式吗
介绍 HTML 原生的单选框.复选框元素样式在各个浏览器上面由用户代理默认设置样式,如果在页面上应用了其他颜色或主题时,我们通常也相应的更改这些输入框或按钮的颜色或背景,否则会出现颜色与背景或主题不融 ...
- android开发UI界面布局教学,android UI学习 -- 设置界面的布局(包括style的使用,selector的使用,Checkbox自定义样式,菜单项的样式)...
最终实现效果如下图: 具体来说就是实现了checkbox自定义选中和为选择样式,菜单项根据不同位置设置不同背景. 先上整体布局文件代码: xmlns:tools="http://schema ...
- 【Android -- UI开发】一份 UI 开发学习指南
思维导图 推荐资料:官方文档 六大布局 网上有人比喻的很好:布局好比是建筑里的框架,组件按照布局的要求依次排列,就组成了用于看见的漂亮界面了. 请看文章:[Android – UI 开发]六大布局 U ...
- android开发 修改标题栏背景_基于.NET的APP开发方式中MobileForm的使用smobiler
样式一 一. Toolbar 1. 目标样式 我们要实现上图中的效果,需要如下的操作: 2. 修改属性 a. 修改Mobile Form的Toolbar属性 获取窗体底部工具栏,打开集合编辑器,并点击 ...
- php取消滑动条,小程序中button以及滚动条默认样式如何清除(代码)
本篇文章给大家带来的内容是关于小程序中button以及滚动条默认样式如何清除(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 实现如下图所示的效果,用四个button实现: 在 ...
- 三分钟教你Word修改默认样式
目录 寻找默认样式的路径 创建自己的.dotm文件 补充 多常见多模板 样式库 替换默认样式--说到底就是替换一个word默认的.dotm文件 寻找默认样式的路径 此时就会默认打开word的默认样式的 ...
- Android:Socket客户端开发,Android 的Socket客户端优化,Android非UI线程修改控件程序崩溃的问题
一.Android:Socket客户端开发 创建一个工程 我们要做的是按下按键之后,去往服务器 (服务器) 或者我们自己写的服务器 ,给他发送一些预定好的东西 然后打开操作界面 然后修改一下 你要发送 ...
- 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 布局的创 ...
最新文章
- python pandas for循环_高逼格使用Pandas加速代码,向for循环说拜拜!
- boost::graph模块实现Graphviz DOT 语言阅读器
- python数独游戏源代码_使用Python编写数独游戏自动出题程序
- 一篇文章带你实操代码理解盒子模型
- 人工智能的前景:更高智慧的体的诞生
- LLBL Gen 3.x 源代码追踪与解析 Type Converter 类型转换器
- 未能加载文件或程序集“System.Runtime.Serialization, Version=2.0.5.0, Culture=neutral,
- ASP.NET Core 2.1基于SignalR和Vue实时通讯
- 数据库中的DbUtils
- Leetcode每日一题:381.insert-delete-getrandom-o1-duplicates-allowed(时间插入、删除和获取随机元素-允许重复)
- moodle安装过程中可能出现的问题
- 从github安装python项目
- C# 抖音无水印视频下载教程,教你你如何抓取抖音无水印接口
- c语言求开平方标准库函数,c语言如何求平方根 C语言中开平方函数是什么?
- 品牌制造商做电子商务的成本结构分析
- QT入门之UI设计界面
- 微型计算机音节,二年级微机下册教案
- Revit二次开发手记【1】
- 东北林业大学计算机科学与技术考研,2021年东北林业大学计算机科学与技术(081200)硕士研究生招生信息_考研招生计划和招生人数 - 学途吧...
- win32俄罗斯方块c++语言 vs2012源代码,C++实现俄罗斯方块