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-...
<declare-styleable name="ExEditText" parent="ExTextView">...</declare-styleable> ``` 尝试这种方法会导致R文件无法正确生成属性引用,因此这不是一个有效的解决方案。 **终极重用方案** 实际可行的解决方案...
下面我们将详细讨论如何在Android中使用自定义`styleable`以及其重要性。 首先,理解`styleable`的概念。`styleable`是Android资源系统中的一种类型,类似于数组,用于存储一系列的属性。这些属性通常在` attrs.xml...
<declare-styleable name="MyNetPic"> <attr name="lineColor" format="color"/><!-- 线的颜色 --> <attr name="cotentColor" format="color"/><!-- 图形的颜色 --> <attr name="side" format="dimension"/> <!-...
<declare-styleable name="GifImageView"> <!--gif文件引用--> <!--是否加载完自动播放--> <!--播放次放,默认永远播放--> <!--播放完成后是否停留在最后一帧,默认false--> </declare-styleable> ...
在Android开发中,往往要用到自定义的控件来实现我们的...-- resource是跟标签,可以在里面定义若干个declare-styleable --> <declare name=custom_view><!-- name定义了变量的名称 --> <attr name=custo
在assets文件夹下放images+json文件就可以动态生成gif的android lottie jar包,需要在自己工程里面的values/... <declare-styleable name="LottieAnimationView"> </declare-styleable>
android:layout_margin="8dp"/>属性说明<declare-styleable name="CircularProgressView"> name="borderWidth" format="dimension" /> // 圆弧边框的宽度 name="colorSequence" format="reference...
这是一个XML文件,用于声明一组自定义的属性集合,称为`declare-styleable`。以下是一个简单的`attr.xml`文件结构示例: ```xml <declare-styleable name="自定义属性名称"> 属性名称" format="属性种类"/> <!-...
<declare-styleable name="MyLeftContent"> <attr name="rightPadding"></attr> </declare-styleable> 4 在主界面布局文件中(res/layout)把最外层标签换成:包名.MyLeftContent(例如:...
<declare-styleable name="DayPickerView"> <attr name="colorCurrentDay" format="color"/> <!-- 今天字体颜色 --> <attr name="colorSelectedDayBackground" format="color"/> <!-- 被选中的日期背景颜色 --> ...
首先我们定义一个declare-styleable标签declare-styleable标签的作用是给自定义控件添加自定义属性用的例如这样 (我们定义了文字的颜色,大小,长度,跟背景的颜色) <declare name=CustomTitleView> ...
在Android中,自定义属性通常在资源XML文件的`<declare-styleable>`元素中定义。例如,假设我们要为一个自定义视图添加两个属性,一个是颜色,另一个是大小,我们可以这样写: ```xml <declare-styleable name=...
- 在此文件中使用`<declare-styleable>`标签定义自定义属性集合。 - 每个属性使用`<attr>`标签定义,包括属性名、格式(`format`)等信息。 示例代码: ```xml <?xml version="1.0" encoding="utf-8"?> ...
重写CompoundButton控件实现带... 由于DEMO中的继承CompoundButton的SwitchButton是使用自定义配置的,所以如果不了解自定义配置的可以看以下文章:android 自定义控件 使用declare-styleable进行配置属性(源码角度)
首先,我们来详细讲解创建`attrs.xml`文件和`declare-styleable`的作用。在Android应用中,我们常常需要为自定义View添加特有的属性,这些属性可以在XML布局文件中设置,以便于在代码中使用。为了实现这一目的,我们...
最后,对于复杂的自定义属性,可能需要创建多个`declare-styleable`标签,并使用嵌套的方式组织。这有助于提高代码的可读性和可维护性。 总的来说,掌握Android的自定义属性运用能极大地提升你的开发效率和应用的...
</declare-styleable>使用ViewPager mViewPager = (ViewPager) findViewById(R.id.viewpager); mViewPager.setAdapter(new ViewPagerAdapter()); FlymeTabStrip tabStrip = (FlymeTabStrip) ...
water-wave-progress水波按进度上升,带环形进度条 , 支持4.0及以上版本,自定义declare-styleable name="WaterWaveProgress"样式, 全都是非必填,,布尔值默认为true