Android自定义View中获取系统属性

March 8, 2022

我们都知道,android开发中,自定义View的自定义参数的获取方法是:

TypedArray array=context.obtainStyledAttributes(attrs,R.styleable.Horiz);

我们能获取到这些的自定义的参数:

<com.xiaoyifei.horiz
android:id=”@+id/id_horiz”
android:layout_width=“200dp”
android:background=”#000000″
android:textSize=“32sp”
android:textColor=”@android:color/white”
app:defaultValue=“5”
app:valueFrom=“2”
app:valueTo=“10”
android:columnCount=“3”
android:layout_height=“50dp” />

但有时我们想获得系统View本身的参数,如这样的: <com.xiaoyifei.horiz android:id=”@+id/id_horizontal_picker” android:layout_width=“200dp” android:background=”#000000″ android:textSize=“32sp” android:textColor=”@android:color/white” app:defaultValue=“5” app:valueFrom=“2” app:valueTo=“10” android:columnCount=“3” android:layout_height=“50dp” />

其实获取方法还是这样的: TypedArray array=context.obtainStyledAttributes(attrs,R.styleable.Hori); 只是在定义attrs时要引用“android:”命名空间。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="Horiz">
       <attr name="android:textSize"/>
      <attr name="android:textColor"/>
        <attr name="android:defaultValue"/>
       <attr name="android:valueFrom"/>
       <attr name="android:valueTo"/>
      <attr name="android:columnCount"/>
  </declare-styleable>
</resources>

这样你在layout布局自定义View时就可以直接使用常用android的命名。

<com.xiaoyifei.horizo
     android:id="@+id/id_horizontal_picker"
     android:layout_width="200dp"
     android:background="#000000"
	    android:textSize="32sp"
      android:textColor="@android:color/white"
     android:defaultValue="5"
	    android:valueFrom="2"
 	   android:valueTo="10"
 	   android:columnCount="3"
   	 android:layout_height="50dp" />