Android自定义控件的属性,网上文章已经很多,之前看了也照着写了,其中有一个就是要自定义一个xml的命名空间后然后再给自定义属性赋值,后来发现不知道什么时候开始Android把这个改了,统一用

xmlns: app ="http://schemas.android.com/apk/res-auto"
然后在用app作为命名空间给自定义属性赋值,例如:

app : myimage_src ="@drawable/myimage"
当然了,这个属性肯定是要在res/values/attrs.xml 里面声明过:

<resources>

<declare-styleable name="CusComponent">

<attr name="myimage_src" format="reference"/>

</declare-styleable>

</resources>

此外,format 还有很多的属性,例如boolean,enum:如官方例子:

[html] view plain copy
  1. <resources>
  2. <declare-styleablename="PieChart">
  3. <attrname="showText"format="boolean"/>
  4. <attrname="labelPosition"format="enum">
  5. <enumname="left"value="0"/>
  6. <enumname="right"value="1"/>
  7. </attr>
  8. </declare-styleable>
  9. </resources>


然后在代码总获取到你设置的属性:

在两参数的构造函数中:

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

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CusComponent);

int imageSrcId;

try {

imageSrcId = a.getResourceId(R.styleable.CusComponent_myimage_src,R.drawable.myimage);

finally {

a.recycle();

}

LayoutInflater inflater = LayoutInflater.from(context);

inflater.inflate(R.layout.custom_component_layout, this, true); // 给自定义控件设置布局

b = (ImageButton)findViewById(R.id.btn); // 获取到布局上的ImageButton

b.setImageResource(imageSrcId);

}


当然其实还有很多个方法都是可以获取到属性的,这个比较简单而已。

需要注意的是,通常,我们在给自定义的控件设置好属性后会调用invalidate() 和 requestLayout() 方法对UI进行刷新,确保其显示。


以上是自定义控件属性的一些基本知识,然后项目中在做自定义控件的时候还学习了自定义dialog的定位:

代码很简单:

[java] view plain copy
  1. Dialogdialog=newDialog(MainActivity.this,R.style.dialog);
  2. Windowwindow=dialog.getWindow();
  3. WindowManager.LayoutParamswlp=window.getAttributes();
  4. wlp.gravity=Gravity.CENTER_HORIZONTAL|Gravity.TOP;
  5. window.setAttributes(wlp);
  6. dialog.setContentView(R.layout.cloud_dialog_view);
  7. dialog.show();


我把dialog定位在了top的位置,并且水平居中。当然你可以根据自己的需要定位在left、top,或者right这样。

要说的是这里的wlp里还有两个关于定位的属性,x,y,这两个属性是根据坐标定位的,不过这个就意味着单位是像素piexl,因此用着不是很方便。

转自:http://blog.csdn.net/wyzxk888/article/details/8964524

更多相关文章

  1. android中自定义的控件,使用自定义属性attrs.xml
  2. Android(安卓)UI高级控件之SimpleAdapter
  3. Android中的android:layout_weight使用详解
  4. Android高德地图开发(2)——地图显示+自定义控件
  5. Android7.1启动系统App必须配置加密
  6. Android开发 第2课 控件TextView、Plain Text、ImageView、 Butt
  7. Android6.0-新控件(一)
  8. Android学习笔记50:使用WebView控件浏览网页
  9. Android(安卓)自定义View——拖动选择时间控件

随机推荐

  1. Android事件分发机制五:面试官你坐啊
  2. 基于组件化/模块化的重构探索实践
  3. 20172323 2017-2018-2《程序设计与数据结
  4. Android(安卓)自定义View之展开收起的Lay
  5. 浅析Android下的Android.mk文件
  6. Android真机连接本地部署的Tomcat问题
  7. Android中ViewPager+Fragment取消(禁止)
  8. Android(安卓)外部存储与内部存储详解
  9. android mvvm viewmodel 拿到view的值_一
  10. Android事件分发机制五:面试官你坐啊