标签:android toolbar android-appcompat
我有一个AppBarLayout,我希望在onCreate()方法中以编程方式将高程设置为0.如果我有一个像这样的onCreate()示例..
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
setSupportActionBar(_toolbar);
_appBar.setElevation(0);
}
AppBarLayout提升不会改变.
但是,如果我添加延迟,例如400毫秒,则AppBarLayout高程会发生变化.
@Override
protected 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,toolbar,android-appcompat 来源: https://codeday.me/bug/20190828/1751464.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。