详解Android自定义控件属性

在Android开发中,往往要用到自定义的控件来实现我们的需求或效果。在使用自定义
控件时,难免要用到自定义属性,那怎么使用自定义属性呢?

在文件res/values/下新建attrs.xml属性文件,中定义我们所需要的属性。

<?xml version="1.0" encoding="utf-8"?>

<resources><!-- resource是跟标签,可以在里面定义若干个declare-styleable -->
  <declare-styleable name="custom_view"><!-- name定义了变量的名称 -->
    <attr name="custom_color" format="color"></attr> <!-- 定义对应的属性,name定义了属性的名称 -->
    <attr name="custom_size" format="dimension"></attr> <!--每一个发生要定义format指定其类型,类型包括
     reference  表示引用,参考某一资源ID
     string  表示字符串
     color  表示颜色值
     dimension  表示尺寸值
     boolean  表示布尔值
     integer  表示整型值
     float  表示浮点值
     fraction  表示百分数
     enum  表示枚举值
     flag  表示位运算
    -->
 </declare-styleable>
public class CustomTextView extends TextView {
  private int textSize;//自定义文件大小
  private int textColor;//自定义文字颜色

  //自定义属性,会调用带两个对数的构造方法
  public CustomTextView(Context context, AttributeSet attrs) {
    super(context, attrs);
    TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.custom_view);//TypedArray属性对象
    textSize = ta.getDimensionPixelSize(R.styleable.custom_view_custom_size, 20);//获取属性对象中对应的属性值
    textColor = ta.getColor(R.styleable.custom_view_custom_color, 0x0000ff);
    setColorAndSize(textColor, textSize);//设置属性
    ta.recycle();
  }

  public CustomTextView(Context context) {
    super(context);
  }

  private void setColorAndSize(int textColor, int textSize) {
    setTextColor(textColor);
    setTextSize(textSize);
  }

}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  xmlns:ldm="http://schemas.android.com/apk/res/com.ldm.learn"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="#f6f6f6"
  android:orientation="vertical"
  android:padding="10dp" >

  <com.ldm.learn.CustomTextView
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:text="自定义TextView"
    ldm:custom_color="#333333"
    ldm:custom_size="35sp" />

</LinearLayout>

布局说明:

通过以上几步就可以实现我们想要的自定义属性效果(用自定义属性设置文字大小及颜色)啦!

(0)

相关推荐

  • Android如何自定义视图属性

    本文实例为大家介绍了Android自定义视图属性的方法,供大家参考,具体内容如下 1. 自定义一个自己的视图类继承自View public class MyView extends View { public MyView(Context context, AttributeSet attrs) { super(context, attrs); //获取到自定义的属性 TypedArray ta=context.obtainStyledAttributes(attrs, R.styleable.

  • Android App中自定义View视图的实例教程

    一.基础 很多的Android入门程序猿来说对于Android自定义View,可能都是比较恐惧的,但是这又是高手进阶的必经之路,所有准备在自定义View上面花一些功夫,多写一些文章.先总结下自定义View的步骤: 1.自定义View的属性 2.在View的构造方法中获得我们自定义的属性 3.重写onMesure 4.重写onDraw 我把3用[]标出了,所以说3不一定是必须的,当然了大部分情况下还是需要重写的. 1.自定义View的属性,首先在res/values/  下建立一个attrs.xm

  • Android中自定义控件的declare-styleable属性重用方案

    最近接触了Android自定义控件,涉及到自定义xml中得属性(attribute),其实也很简单,但是写着写着,发现代码不完美了,就是在attrs.xml这个文件中,发现属性冗余,于是就想有没有类似属性继承或者include之类的方法.本文将就declare-stylable中属性重用记录一下. 不完美的代码 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <resources>     

  • Android UI设计系列之自定义TextView属性实现带下划线的文本框(4)

    在Android开发过程中,如果Android系统自带的属性不能满足我们日常开发的需求,那么就需要我们给系统控件添加额外的属性了.假如有个需求是实现带下划线的文本显示(下划线),如果不使用自定义属性的话实现起来也不太难(起码我认为的实现方式是有许多种的),今天就讲解一下如何使用自定义属性来实现上述带下划线的文本框吧.还好Android中自定义属性不是很复杂,也可以归纳为三步走吧. 老规矩,还是先贴出工程目录吧: 一.添加属性文件 在values文件夹中新建attrs.xml文件,在文件中新建属性

  • Android应用开发中自定义ViewGroup视图容器的教程

    一.概述 在写代码之前,我必须得问几个问题: 1.ViewGroup的职责是啥? ViewGroup相当于一个放置View的容器,并且我们在写布局xml的时候,会告诉容器(凡是以layout为开头的属性,都是为用于告诉容器的),我们的宽度(layout_width).高度(layout_height).对齐方式(layout_gravity)等:当然还有margin等:于是乎,ViewGroup的职能为:给childView计算出建议的宽和高和测量模式 :决定childView的位置:为什么只是

  • android 自定义控件 自定义属性详细介绍

    自定义控件在android中无处不见,自定义控件给了我们很大的方便.比如说,一个视图为imageview ,imagebutton ,textview 等诸多控件的组合,用的地方有很多,我们不可能每次都来写3个的组合,既浪费时间,效率又低.在这种情况下,我们就可以自定义一个view来替换他们,不仅提升了效率并且在xml中运用也是相当的美观. 一.控件自定义属性介绍 以下示例中代码均在values/attrs.xml 中定义,属性均可随意命名. 1. reference:参考某一资源ID. 示例:

  • android开发教程之自定义属性用法详解

    最近项目中经常需要用到自定义控件,因此自定义属性也是经常要用到的,在此说明一下自定义属性的用法: 自定义属性都存在于/value/attr.xml文件中,以如下格式存在. 复制代码 代码如下: <resource> <declare-styleable name="自定义属性名称"> <attr name="属性名称" format="属性种类"/> ...... </declare-styleable&

  • 理解Android中的自定义属性

    本文实例讲解了Android中的自定义属性,具体内容如下 1.引言 对于自定义属性,大家肯定都不陌生,遵循以下几步,就可以实现: 自定义一个CustomView(extends View )类 编写values/attrs.xml,在其中编写styleable和item等标签元素 在布局文件中CustomView使用自定义的属性(注意namespace) 在CustomView的构造方法中通过TypedArray获取 ps:如果你对上述几个步骤不熟悉,建议先熟悉下,再继续~ 那么,我有几个问题:

  • Android自定义属性 format的深入解析

    1. reference:参考某一资源ID.(1)属性定义: 复制代码 代码如下: <declare-styleable name = "名称">   <attr name = "background" format = "reference" /></declare-styleable> (2)属性使用: 复制代码 代码如下: <ImageView android:layout_width = &quo

  • 详解Android自定义控件属性TypedArray以及attrs

    最近在研究android自定义控件属性,学到了TypedArray以及attrs.大家也可以结合<理解Android中的自定义属性>这篇文章进行学习,后续一篇还有应用. 1.attrs文件编写 <?xml version="1.0" encoding="utf-8"?> <resources> <attr name="titleText" format="string" /> &

随机推荐