setElevation() 不适用于 AppBarLayout
setElevation() not working on AppBarLayout
我有一个 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);
更详细的解释请看下面的回答:
我有一个 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);
更详细的解释请看下面的回答: