android自定义控件基础
16lz
2021-01-26
在Android中,可以自定义类,继承ViewGroup等容器类,以实现自己需要的布局显示。
如果你在ViewGroup中增加了控件,却无法显示出来,那么下面这个例子,就可以用来参考了。
(主要是要实现onLayout()方法,在这个方法中,对每个子控件进行measure(),然后再布局。)
[java] view plain copy
- packagecom.arui;
- importandroid.content.Context;
- importandroid.util.Log;
- importandroid.view.View;
- importandroid.view.ViewGroup;
- importandroid.widget.Button;
- /**
- *ExampleforusingViewGroup.
- *
- *@authorhttp://blog.csdn.net/arui319
- *@version2010/09/07
- *
- */
- publicclassMyViewGroupextendsViewGroup{
- publicMyViewGroup(Contextcontext){
- super(context);
- this.initOtherComponent(context);
- }
- privatevoidinitOtherComponent(Contextcontext){
- ButtonaBtn=newButton(context);
- //setid1
- aBtn.setId(1);
- aBtn.setText("abtn");
- this.addView(aBtn);
- ButtonbBtn=newButton(context);
- //setid2
- bBtn.setId(2);
- bBtn.setText("bbtn");
- this.addView(bBtn);
- }
- @Override
- protectedvoidonLayout(booleanchanged,intl,intt,intr,intb){
- intchildCount=getChildCount();
- for(inti=0;i<childCount;i++){
- Viewchild=getChildAt(i);
- switch(child.getId()){
- case1:
- //1isaBtn
- Log.d("MyViewGroup","btn1setting");
- child.setVisibility(View.VISIBLE);
- child.measure(r-l,b-t);
- child.layout(0,0,child.getMeasuredWidth(),child
- .getMeasuredHeight());
- break;
- case2:
- //2isbBtn
- Log.d("MyViewGroup","btn2setting");
- child.setVisibility(View.VISIBLE);
- child.measure(r-l,b-t);
- child.layout(0,50,child.getMeasuredWidth(),child
- .getMeasuredHeight()+50);
- break;
- default:
- //
- }
- }
- }
- }
更多相关文章
- Android(安卓)WebSettings设置
- Android单元测试-Robolectric 浅析
- Android(安卓)中自定义控件和属性
- android项目之通讯录数据库
- 关于android应用--内存的优化
- App Widget(Application Widget)第一讲(Android学习随笔十)
- Android中的自定义注解(反射实现-运行时注解)
- ScrollView嵌套LinearLayout布局不能撑满全屏的问题
- Android的嵌入式关系型SQLite数据库使用