b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

2011.08.18(二)——— android 自定义组合组件 onFinishInflate onSizeChang

电脑杂谈  发布时间:2016-05-13 05:05:26  来源:网络整理

你是否正在寻找关于onfinishinflate的内容?让我把最俱价值的东西奉献给你:

当前位置:我的异常网» Android»2011.08.18(二)——— android 自定义组合组件 on

2011.08.18(二)——— android 自定义组合组件 onfinishinflate onSizeChanged

网友分享于:2013-07-20浏览:719次

2011.08.18(2)——— android 自定义组合组件 onfinishinflate onSizeChanged
2011.08.18(2)——— android 自定义组合组件 onfinishinflate onSizeChanged
参考:
onfinishinflate 当View中所有的子控件均被映射成xml后触发
onSizeChanged 当view的大小发生变化时触发
先看一下执行顺序
ButtonWaveView 为自定义组合组件
public class ButtonWaveView extends LinearLayout { public ButtonWaveView(Context context) { super(context); } public ButtonWaveView(Context context, AttributeSet attrs) { super(context, attrs); System.out.println("ButtonWaveView"); } @Override protected void onFinishInflate() { super.onFinishInflate(); System.out.println("onfinishinflate"); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); System.out.println("onSizeChanged"); } }
MainActivity.java
public class MainActivity extends Activity { private ButtonWaveView bwv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); System.out.println("1111111111111"); setContentView(R.layout.buttonwaveview); bwv = (ButtonWaveView)findViewById(R.id.bwv); System.out.println("22222222222222222222222"); } }
这个结果为:
11111111111111 ButtonWaveView onfinishinflate 22222222222222222222222
可以看出来 构造方法和onfinishinflate都是在
setContentView(R.layout.buttonwaveview);
就开始执行了 然后再回执行onCreate后面的代码
我见的自定义组合组件 大多有两种
1、在onSizeChanged里面写
2、在onfinishinflate里面写
1、onSizeChanged
其实 上面的代码onSizeChanged是不会执行 ,因为大家也看到了 它是在view大小发生改变时 才执行的
看我参考的那篇文章,所有代码都是在onSizeChanged里面写的 但是onSizeChanged不执行怎么办?所以 在构造方法里面
setBackgroundResource(R.drawable.tabswitcher_long);
设置了背景图片 认为的改变view 这样就可以调用onSizeChanged了
2、onfinishinflate
这个里面写也是可以的 但是 有一个问题
假如说 我在Activity里面 需要设置自定义组件ButtonWaveView 的一些变量,而且这些变量(例如 width,height)是必须在addview前面调用的
我们的set方法肯定是写在onCreat里面的 但是前面我们也看到了 onfinishinflate是先于执行的 这时 我们的程序就有问题了
解决方法有两个
1、用onSizeChanged
2、用自定义属性
自定义属性
参考:

以上就是关于onfinishinflate的全部内容,相信你一定会非常满意,。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-4741-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...