[Android学习笔记] Overlaying Action Bar

[Android学习笔记] Overlaying Action Bar
Oct 1, 2013

默认情况下,Action Bar 出现在窗口顶部。有时为了让屏幕显示更多的内容,需要隐藏 Action Bar(如向下滑动列表时隐藏,向上滑动列表时显示)。

如果直接调用 Action Bar的hide()、收 show() 方法,会让activity根据新的区域大小重新计算并重新绘制布局。

为了避免这种情况,可以使用 Overlaying Action Bar,即整个屏幕都显示内容,而 Action Bar 覆盖这上面,这样隐藏/显示Action Bar的时候就不会重新计算布局大小并重新绘制布局。

开启Action Bar的Overlaying模式需要在主题中设置 android:windowActionBarOverlaying 属性为true,为了兼容2.1-3.1版本,设置windowActionBarOverLaying 属性为 true

true


true

使用Overlaying Action Bar会挡住内容区域一种方法是将Action Bar设为透明,另外一种方法是当显示ActrionBar时将内容区域的MarginTop/PaddingTop设置为Action Bar 的高度,当隐藏ActionBar时将内容区域的MarginTop/PaddingTop设置为0;

ActionBar mActionBar;
ToggleButton toggleButton;
View rootView;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setting);
mActionBar = getSupportActionBar();
mActionBar.setDisplayHomeAsUpEnabled(true);
findViews();
setListeners();
}

private void findViews(){
toggleButton = (ToggleButton)findViewById(R.id.toggleActionBar);
rootView = findViewById(R.id.setting_root);
}

private void setListeners(){
toggleButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
mActionBar.show();
rootView.setPadding(0, mActionBar.getHeight(), 0, 0);
}else{
mActionBar.hide();
rootView.setPadding(0, 0, 0, 0);
}
}
});
}

Action Bar is showing
Action Bar is hiding
这里写图片描述
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值