android–setElevation()无法在AppBarLayout上运行

android–setElevation()无法在AppBarLayout上运行,第1张

概述我有一个AppBarLayout,我希望在onCreate()方法中以编程方式将高程设置为0.如果我有一个像这样的onCreate()示例..@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Bu

我有一个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上运行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1108736.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存