我有一个AppbarLayout,我希望在onCreate()方法中以编程方式将高程设置为0.如果我有一个像这样的onCreate()示例..
@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); ButterKnife.bind(this); setSupportActionbar(_toolbar); _appbar.setElevation(0);}
AppbarLayout提升不会改变.
但是,如果我添加延迟,例如400毫秒,则AppbarLayout高程会发生变化.
@OverrIDeprotected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); ButterKnife.bind(this); setSupportActionbar(_toolbar); Observable.just(_appbar) .delay(400, TimeUnit.MILliSECONDS) .observeOn(AndroIDSchedulers.mainThread()) .subscribe(new Consumer<AppbarLayout>() { @OverrIDe public voID accept(AppbarLayout appbarLayout) throws Exception { appbarLayout.setElevation(0); } });}
任何人都可以解释为什么会这样吗?以及我如何能够毫不拖延地解决这个问题.我也尝试过使用getSupportActionbar().setElevation(0);同样,并使用API 24
解决方法:
解决了!而不是设置高程,我使用:
StateListAnimator stateListAnimator = new StateListAnimator();stateListAnimator.addState(new int[0], ObjectAnimator.offloat(vIEw, "elevation", 0));appbarLayout.setStateListAnimator(stateListAnimator);
有关更详细的说明,请参阅以下答案:
How to set the elevation of an AppBarLayout programmatically in the Android Support Library v24.0.0?
总结以上是内存溢出为你收集整理的android – setElevation()无法在AppBarLayout上运行全部内容,希望文章能够帮你解决android – setElevation()无法在AppBarLayout上运行所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)