android自定义控件、样式
来源:互联网 发布:防沉迷解除软件 编辑:程序博客网 时间:2024/05/17 09:09
关于自定义控件的使用,其实也还是比较好懂,使用的。
首先要自己先定义个类并且继承于你自己想要实现的基础控件(Button、Text)等,或者也可以直接继承View类。在自定义类中一定要现实两个构造方法。一个是
public 类名(Context context) { super(context); }
另一个是
public 类名(Context context, AttributeSet attrs) { super(context, attrs);//这里可以使用inflate导入已定义好的布局文件。}
这里说明一种定义的使用流程:
1.先自定义好一个自己想要实现的xml布局文件(比如想要实现图文结合的按钮,就要定义一个ImageView跟TextView)。
2.写个类继承于LinearLayout布局组件,并且在第二个构造方法中(也就是带有AttributeSet属性)导入刚才定义好的布局文件(LayoutInflater.from(context).inflate(布局文件,this,true)
),并且初始化找到刚才在布局文件中定义好的两个组件。在该类中可以自定义一些方法用来实现自己想要的一些功能。
3.在要现实的xml文件中(比如activity.xml)加入这定义的控件即可(即刚才定义好的类,完整的包名+类名),其实也就是跟定义系统的View控件一样只不过把Button、TextView等名字改成包名+类名而已。
4.在activity.xml对应的类中通过findById找出自定义组件,并且实现一些刚才定义的方法或者添加一些官方提供的事件就好了。
另外一种实现方法
一开始也是要自定义一个xml布局文件(内要有某个要改进的组件),一个类继承于要改进的组件。重写两个构造方法。
2.重写onDraw方法。在方法内实现自己想要的功能类型。
3.在需要显示的xml文件中也是通过包名+类名方法显示出来。
4.在实现xml布局对应的Activity类中找出自定义组件,按需求再实现一些方法。
自定义样式
在android中除了自定义组件外,我们还可以自定义样式。
在项目的res目录下values文件中,可以自定义xxx.xml样式。当然项目初始化时,values文件夹内就已有系统定义好的一些样式内容了。
我就以一个例子说明:
<style name="AppBaseTheme" parent="android:Theme.Light"> <!-- Theme customizations available in newer API levels can go in res/values-vXX/styles.xml, while customizations related to backward-compatibility can go here. --> </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> </style> <style name="MyAppTheme" parent="android:Theme.Light"> <item name="android:textColor">#ffffffff</item> <item name="android:windowNoTitle">true</item> </style>
从代码片段可以看出,先定义外围为style类型,然后是name属性 parent属性是可选的用来继承你想要实现的一些样式,可以是系统自定义好的也可以是自己已写好的。内层是item类型,name属性值是系统定义好的属性。外面的值是自己想要实现的样式。最后在xml内定义的控件中使用style=”@xxx/样式的name值”。
另外一种根据鼠标状态来改变控件样式
比如说,一个按钮按下之前是默认的颜色,按下又是另外的颜色。
在项目中自己定义一个drawable文件夹,里面定义一个selector样式。如:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:color="hex_color" android:state_pressed="true/false"/>
item属性内color值是根据后面state_paressed的值来确定的。其他样式也是类似使用。
- android自定义控件样式
- android自定义控件样式
- Android控件样式自定义
- android自定义控件样式
- android自定义控件、样式
- 【android自定义控件】button样式自定义<二>
- Android知识点7-Android控件自定义样式
- 【android自定义控件】LinearLayout定义ActionBar样式
- android 控件之checkbox自定义样式
- Android-自定义控件样式之shape
- Android 自定义控件样式 常用属性
- Android中自定义switch控件样式
- Android中自定义switch控件样式
- android 自定义控件样式点击效果实现
- tabControl控件自定义样式
- Silverlight 控件自定义样式
- Android_自定义控件样式
- IntegerUpDown控件自定义样式
- Android自定义ViewGroup之子控件的自动换行和添加删除
- 嵌入式系统设计电子书
- 黑马程序员——【学习笔记】集合——泛型
- leetcode287 : Find the Duplicate Number
- String format 的使用
- android自定义控件、样式
- 优先级队列(priority——queue)
- activemq 控制面板里的 Number Of Pending Messages、 Messages Enqueued、Messages Dequeued含
- Codeforces 586D Phillip and Trains dfs —— Round #325 (Div. 2)
- FMDB的基本使用
- maven报错非法字符:\65279 错误
- break和continue的区别
- Jetty的安装和配置
- 安卓开发中的工作笔记