`
寻梦者
  • 浏览: 624949 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

declare-styleable的使用

阅读更多

declare-styleable的使用

declare-styleable是给自定义控件添加自定义属性用的

1.首先,先写attrs.xml

复制代码
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <declare-styleable name="TestAttr">
        <attr name="name" format="reference" />
        <attr name="age">
            <flag name="child" value="10" />
            <flag name="young" value="18" />
            <flag name="oldman" value="60" />
        </attr>
        <attr name="textSize" format="dimension" />   
    </declare-styleable>
</resources>
复制代码
reference指的是是从string.xml引用过来
flag是自己定义的,类似于 android:gravity="top"
dimension 指的是是从dimension.xml里引用过来的内容.注意,这里如果是dp那就会做像素转换

2.在布局文件里的写法
复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:attrstest="http://schemas.android.com/apk/res/com.arlos.attrstest"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >s

    <com.arlos.attrstest.MyTestView
        android:id="@+id/tvTest"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
         attrstest:name="@string/myname" 
         android:gravity="top"
         attrstest:age="young"
         attrstest:textSize="@dimen/aa"
        android:text="@string/hello" />

</LinearLayout>
复制代码

    2.1 先引用这个dtd

xmlns:attrstest="http://schemas.android.com/apk/res/com.arlos.attrstest"
attrstest是随便写的.后面的包名是你所在的项目的根包.也就是在manifest里的com.arlos.attrstest

 2.2 在自定义的控件里写属性

3. 最后在控件的构造方法里取得这些值
复制代码
public class MyTestView extends TextView {

    public MyTestView(Context context, AttributeSet attrs) {
        super(context, attrs);

        TypedArray tArray = context.obtainStyledAttributes(attrs,
                R.styleable.TestAttr);
        String name = tArray.getString(R.styleable.TestAttr_name);
        System.out.println("name = " + name);
        int age = tArray.getInt(R.styleable.TestAttr_age, 200);
        System.out.println("age = " + age);
         float demin = tArray.getDimension(R.styleable.TestAttr_textSize,0);
         System.out.println("demin = " + demin);
        tArray.recycle();
    }
}
分享到:
评论

相关推荐

    自定义控件控件的declare-styleable配置

    最近在模仿今日头条,发现它的很多属性都是通过自定义控件并设定相关的配置属性进行配置,于是便查询了解了下declare-styleable,下面我把自己的使用感受和如何使用进行说明下。 declare-styleable:declare-...

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

    主要介绍了Android中自定义控件的declare-styleable属性重用方案,本文给出了一个终极重用解决方案,需要的朋友可以参考下

    Android雷达图(蜘蛛网图)源码

    &lt;declare-styleable name="MyNetPic"&gt; &lt;attr name="lineColor" format="color"/&gt;&lt;!-- 线的颜色 --&gt; &lt;attr name="cotentColor" format="color"/&gt;&lt;!-- 图形的颜色 --&gt; &lt;attr name="side" format="dimension"/&gt; &lt;!-...

    GifImageView.java

    &lt;declare-styleable name="GifImageView"&gt; &lt;!--gif文件引用--&gt; &lt;!--是否加载完自动播放--&gt; &lt;!--播放次放,默认永远播放--&gt; &lt;!--播放完成后是否停留在最后一帧,默认false--&gt; &lt;/declare-styleable&gt; ...

    详解Android自定义控件属性

    在Android开发中,往往要用到自定义的控件来实现我们的...-- resource是跟标签,可以在里面定义若干个declare-styleable --&gt; &lt;declare name=custom_view&gt;&lt;!-- name定义了变量的名称 --&gt; &lt;attr name=custo

    lottie-2.7.0.jar

    在assets文件夹下放images+json文件就可以动态生成gif的android lottie jar包,需要在自己工程里面的values/... &lt;declare-styleable name="LottieAnimationView"&gt; &lt;/declare-styleable&gt;

    CircularProgress-一个模仿android L中载入视图的控件.zip

     android:layout_margin="8dp"/&gt;属性说明&lt;declare-styleable name="CircularProgressView"&gt;   name="borderWidth" format="dimension" /&gt; // 圆弧边框的宽度   name="colorSequence" format="reference...

    仿qq侧滑代码

    &lt;declare-styleable name="MyLeftContent"&gt; &lt;attr name="rightPadding"&gt;&lt;/attr&gt; &lt;/declare-styleable&gt; 4 在主界面布局文件中(res/layout)把最外层标签换成:包名.MyLeftContent(例如:...

    定制日期选择器(CalendarView)

    &lt;declare-styleable name="DayPickerView"&gt; &lt;attr name="colorCurrentDay" format="color"/&gt; &lt;!-- 今天字体颜色 --&gt; &lt;attr name="colorSelectedDayBackground" format="color"/&gt; &lt;!-- 被选中的日期背景颜色 --&gt; ...

    Android自定义View--01

    自定义view起步 1,新建attrs.xml文件,增加declare-styleable 2,实现android.view.View 3,在layout.xml 使用自定义view

    Android - SwitchButton 开关按钮 的多种实现方式 (源码)

    重写CompoundButton控件实现带... 由于DEMO中的继承CompoundButton的SwitchButton是使用自定义配置的,所以如果不了解自定义配置的可以看以下文章:android 自定义控件 使用declare-styleable进行配置属性(源码角度)

    FlymeTabStrip-自定义实现Flyme6的ViewPager指示器.zip

     &lt;/declare-styleable&gt;使用ViewPager mViewPager = (ViewPager) findViewById(R.id.viewpager); mViewPager.setAdapter(new ViewPagerAdapter()); FlymeTabStrip tabStrip = (FlymeTabStrip) ...

    Android 自定义进度条(多种效果) 源码

    water-wave-progress水波按进度上升,带环形进度条 , 支持4.0及以上版本,自定义declare-styleable name="WaterWaveProgress"样式, 全都是非必填,,布尔值默认为true

    view自定义属性使用and more

    declare-styleable 在res/values目录下新建xml文件 自定义你的属性 2. AttributeSet和TypedArray 在view中获取这些属性对应的值,设置绑定到view上 3. xmlns申明与引用 在你要使用的地方引入命名空间并使用这些...

    Android自定义等待对话框

    最近,看了好多的APP的等待对话框,发现自己的太lower,于是就研究了一番,最后经过苦心努力,实现一个。 自定义一个LoadingIndicatorView(extends View )类 编写values/attrs.xml,在其中编写...declare-styleable n

    Android-ImageView-hover:自定义 ImageView,在 ImageView 的属性中设置悬停效果

    /declare-styleable &gt; 第 2 步:自定义 ImageView(MyImageView.java) public class MyImageView extends ImageView { ... } 第 3 步:在布局 xml 中声明 myattr : xmlns:myattr=" " &lt; LinearLayout xmlns:...

    PieGraphDemo-自定义饼状图效果.zip

    代码介绍:&lt;declare-styleable name="PieGraph"&gt;  &lt;!-- 饼状图的半径 --&gt;   name="pie_circle_radius" format="dimension" /&gt;  &lt;!-- 选中时候的那一块往外拉的距离 --&gt;   name="pie_...

    Android 自定义view时用到的TypedArray

    前言: 在自定义控件的时候,如果我们想额外的添加一些...declare-styleable这个标签的作用其实就是可以为我们完成很多常量(int[]数组,下标常量)等的编写,简化我们的开发工作 format还有如下类型: format 介绍

    Android开源项目PullToRefresh下拉刷新功能详解

    先看看效果图: ... 下拉刷新这个功能我们都比较常见了,今天介绍的就是这个功能的实现。我将按照这个开源库的范例来一点一点介绍,今天是介绍比较常见的PullToRefreshListView,是让listView有...declare-styleable na

Global site tag (gtag.js) - Google Analytics