复习了下自定义style的使用
一、为什么要自定义style
这是样式与控件本身脱离的一种方式。style就像html中的css,只负责自定义样式。View控件在layout中就只负责声明自己就可以了。
就像这样:
首先在style.xml中自定义一个style
<style name="button_style">
<item name="android:background">#fff</item>
<item name="android:textSize">30sp</item>
<item name="android:textColor">#000</item>
</style>
之后我们在activity_layout中调用:
<Button
style="@style/button_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试"/>
activity_layout
所以说如果没有style就只能让View与style属性写在一起,就像这样
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#fff"
android:textSize="30dp"
android:textColor="#000"
android:text="测试"/>
可能这个例子中看不出突出的对比,但是显然当内容庞大的时候第一种方法更好。
缺点:
①、首先这种做法无法复用style。如果其他View也需要复用该style的时候,还需要View自己编写。
②、其次将View与style写在一起是一种很难看的写法,不利于区分。
二、如何自定义style
①、继承android提供的style,继承android提供的style属性
首先,我们可以通过继承android提供预置的style来完成。所以我们讲述一下style的继承
<style name="button_style">
<item name="android:background">#fff</item>
<item name="android:textSize">30sp</item>
<item name="android:textColor">#000</item>
</style> <!--第一种继承方法-->
<style name="new_button" parent="button_style">
<item name="android:background">#0ac</item>
</style> <!--第二种继承方式-->
<style name="button_style.background">
<item name="android:background">#f3e</item>
</style>
style
两种继承方法都继承了父style的属性,然后通过重写父style的属性。(同JAVA的继承)
那么两个继承方式的区别是什么:
第一种方式是自定义命名。
第二种方式是有阶梯的命名:可以突出自己是修改了parent的哪一部分。
②、自定义View的style
1、自定义一个CustomView(extends View)类
2、编写values/attrs.xml,在其中编写styleable和item等标签元素
<resources>
<declare-styleable name="CustomView">
<attr name="custom_bg" format="color"/>
</declare-styleable>
</resources>
attr
3、使用自定义属性
①、首先可以在style.xml中设定属性
②、在layout中使用Custom的自定属性
4、在CustomView的构造方法中通过TypedArray获取
复习了下自定义style的使用的更多相关文章
- VS2012下自定义打开文件对话框
VS2012下自定义打开文件对话框,MFC的CFileDialog封装了太多,太复杂,绕得头晕,自己封装一个得了 #pragma once #include <objbase.h> #in ...
- 在String()构造器不存在的情况下自定义一个MyString()函数,实现如下内建String()方法和属性:
在String()构造器不存在的情况下自定义一个MyString()函数,实现如下内建String()方法和属性: var s = new MyString("hello"); s ...
- vs 2013下自定义ASP.net MVC 5/Web API 2 模板(T4 视图模板/控制器模板)
vs 2013下自定义ASP.net MVC 5/Web API 2 模板(T4 视图模板/控制器模板): Customizing ASP.NET MVC 5/Web API 2 Scaffoldi ...
- Windows Phone开发手记-WinRT下自定义圆形ItemsControl
这里的ItemsControl指的是Xaml里的集合控件,包括ListView,GridView等,此篇博客主要参考MSDN Blog的一篇文章,具体出处为:http://blogs.msdn.com ...
- 如何在不接入微信API的情况下自定义分享内容(图片、链接、标题)
方法如下: 1.设置分享title:动态改变document.title值即可: document.title = 'test' 2.设置分享图片:在页面隐藏一张尺寸大于290*290的图(图片需要容 ...
- Arcgis for javascript不同的状态下自定义鼠标样式
俗话说:爱美之心,人皆有之.是的,没错,即使我只是一个做地图的,我也希望自己的地图看起来好看一点.在本文,给大家讲讲在Arcgis for javascript下如何自定义鼠标样式. 首先,说几个状态 ...
- CentOS7下自定义目录安装mono+jexus教程
一.阅读前须知: 1.本文属于安装完Centos7之后的步骤 2.如果还不了解mono,请点击mono 3.本篇主要内容是使用自定义目录安装mono+jexus教程,使用默认目录请查看使用默认目录安装 ...
- android 自定义Style初探---ProgressBar
系统自带的ProgressBar太丑了,所以我决定自定义一个Style. 原来的Style <?xml version="1.0" encoding="utf-8& ...
- IOS下自定义click事件使用alert引发的血案
使用过iscroll插件的同学都知道iscroll支持自定义事件,即在调用iscroll时参数赋值options.click = true. 接下来定义事件如: $clinicAppoint.on(' ...
随机推荐
- linux 下编译安装php
系统环境: CentOS 6.5 x86_64 下载 PHP 源码包 # wget http://cn2.php.net/distributions/php-5.5.9.tar.bz2 # tar x ...
- ARM 之LCD和LCD控制器
既然提到 了LCD那么我们首先必须要了解的就是他的种类,CD(liquid crystal display), 即液晶显示器,是这一种采用了液晶控制透光度计数来实现色彩的显示器,他与传统的CRT显示 ...
- MySQL锁等待分析【1】
场景: 昨天业务系统上遇到了数据库慢的问题(对dcsdba.og_file_audit表的insert 慢&超时).分析后定位到是由于锁等待造成的.分析过程如下: 1.执行show proce ...
- iOS 第三方 需要 引用的库
================================================== AFNetWorking 是基于 nsurlconnection 所以不需要引入库 === ...
- windows下adb+flash_image刷机
刷机是常事,总要把刷机包放在卡上,然后关机三键一起按到recovery再刷,觉得不爽,麻烦,所以研究出了adb调用flash_image刷system分区,全部脚本windows脚本执行,点点鼠标就o ...
- 使用iText生成带底图的PDF
package com.wzh.itext; import com.itextpdf.text.Chunk; import com.itextpdf.text.Document; import com ...
- poj1740 A New Stone Game
题意:对于n堆石子,每堆若干个,两人轮流操作,每次操作分两步,第一步从某堆中去掉至少一个,第二步(可省略)把该堆剩余石子的一部分分给其它的某些堆. 真是好♂题,代码不长就是好♂题. 首先考虑两堆相同的 ...
- [VBA] excel获取单元格的超链接地址函数
Function geturl(c As Range) As String geturl = c.Hyperlinks().Address End Function 设置超链接的函数是HYPERLIN ...
- phpcms:五、网站首页(index.html)
1.经典案例:图文列表:{pc:content action="position" posid="2" order="listorder DESC& ...
- 马士兵 Servlet & JSP(1) Servlet (源代码)
1.HTTP协议基础测试(获取页面源代码) import java.io.BufferedReader; import java.io.IOException; import java.io.Inpu ...