问题描述
- Android addview自定义控件不显示问题
-
为什么我在onCreat中addview一个自定义控件能够正常显示,但是在onWindowsFoucsChanged里面addview总是显示不出来
解决方案
你可以在oncreate 中 添加 然后再 onWindowFocusChanged 中设置 宽高
解决方案二:
把进去的view,addview之前,先用view.merits(0,0)测量一下,再加进去
解决方案三:
把进去的view,addview之前,先用view.measure(0,0)测量一下,再加进去
解决方案四:
把代码贴出来看看,onWindowsFoucsChanged是你自己定义的方法吧,你有没有调用了呢?没有调用肯定是不显示的,onCreate()在创建活动是时候自动调用,详细看activity的生命周期
解决方案五:
Android自定义控件-AddView
用户自定义控件 界面 不显示问题
自定义控件在sumsung手机上第一次显示 第二次 不显示子控件的问题解决
解决方案六:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Circleview av = new Circleview(this, 360, 468, 150);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
cl = (LinearLayout) findViewById(R.id.cl);
cl.addView(av);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
cl = (LinearLayout) findViewById(R.id.cl);
w = cl.getWidth() / 2;
h = cl.getTop() + cl.getHeight() / 2;
av = new Circleview(this, w, h, 150);
cl.addView(av);
super.onWindowFocusChanged(hasFocus);
}
解决方案七:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Circleview av = new Circleview(this, 360, 468, 150);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
cl = (LinearLayout) findViewById(R.id.cl);
cl.addView(av);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
cl = (LinearLayout) findViewById(R.id.cl);
w = cl.getWidth() / 2;
h = cl.getTop() + cl.getHeight() / 2;
av = new Circleview(this, w, h, 150);
cl.addView(av);
super.onWindowFocusChanged(hasFocus);
}
解决方案八:
代码看起来没有问题,你知道什么时候触发这个方法吗?
解决方案九:
因为从onWindowFocusChanged被执行起,用户可以与应用进行交互 ,是真正visible的时间点,已经加载完毕
解决方案十:
你添加进去了,但是没有告诉显示多大,再设置一个布局参数进去吧。