静水流深—j 2016-04-05 07:32 采纳率: 100%
浏览 10865
已采纳

Android addview自定义控件不显示问题

为什么我在onCreat中addview一个自定义控件能够正常显示,但是在onWindowsFoucsChanged里面addview总是显示不出来

  • 写回答

11条回答 默认 最新

  • 103style 2016-04-06 11:18
    关注

    你可以在oncreate 中 添加 然后再 onWindowFocusChanged 中设置 宽高

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 幽兰香风远 2016-04-05 07:33
    关注

    把进去的view,addview之前,先用view.merits(0,0)测量一下,再加进去

    评论
  • 幽兰香风远 2016-04-05 07:34
    关注

    把进去的view,addview之前,先用view.measure(0,0)测量一下,再加进去

    评论
  • Crawl.W 2016-04-05 07:48
    关注

    把代码贴出来看看,onWindowsFoucsChanged是你自己定义的方法吧,你有没有调用了呢?没有调用肯定是不显示的,onCreate()在创建活动是时候自动调用,详细看activity的生命周期

    评论
  • 静水流深—j 2016-04-05 08:08
    关注

    @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);
    }
    
    
    
    评论
  • 静水流深—j 2016-04-05 08:08
    关注

    @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);
    }

    评论
  • Crawl.W 2016-04-05 08:23
    关注

    代码看起来没有问题,你知道什么时候触发这个方法吗?

    评论
  • 小小Q_Forler 2016-04-05 08:46
    关注

    因为从onWindowFocusChanged被执行起,用户可以与应用进行交互 ,是真正visible的时间点,已经加载完毕

    评论
  • bingaicao1 2016-04-05 10:01
    关注

    你添加进去了,但是没有告诉显示多大,再设置一个布局参数进去吧。

    评论
  • bruse_android 企业官方账号 2016-04-05 16:33
    关注

    设置一下params吧

    评论
  • 103style 2016-04-06 04:56
    关注

    public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if(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);
    }
    }

    试试

    评论
查看更多回答(10条)

报告相同问题?

悬赏问题

  • ¥15 电脑锁屏时vba运行SAP,excel数据不能复制到SAP
  • ¥50 74LS系列 74LS00 74LS04设计一个RS485电路(关键词-差分)
  • ¥30 各位help写一下代码
  • ¥15 在运行SDEdit模型下载不了
  • ¥15 求51控制l298n驱动的小车中超声波避障怎么写
  • ¥15 电脑连上WIFI却用不了
  • ¥30 MATLAB在RLC电路的固有响应和阶跃响应GUI仿真报告
  • ¥15 hyper-v出现的问题
  • ¥15 有能用的可加酬金,求可以批量下载懒人听书的软件,能登录自己帐号的。
  • ¥100 高博一起做RGB-D SLAM(5)VO无法出visualisation问题