这是隐藏我的 ActionBar 的好方法吗?
Is this a good way to hide my ActionBar?
我想在 2 秒后以编程方式在 Android 中隐藏我的操作栏。
如果用户点击屏幕顶部,操作栏可以再次显示。
我环顾四周,发现了多种使用不同主题隐藏操作栏的方法。
然而,我的方法是这样的:
private void hideActionBar(){
if(getSupportActionBar().isShowing()){
getSupportActionBar().hide();
} else {
getSupportActionBar().show();
}
}
因此,有一个动画会随着整个屏幕拉起操作栏。
这应该像那样工作吗?
您可以像这样尝试禁用隐藏动画:
try
{
getSupportActionBar().getClass().getDeclaredMethod("setShowHideAnimationEnabled", boolean.class).invoke(getSupportActionBar(), false);
}
catch (Exception exception)
{
// The animation will still be displayed if an exception was thrown.
}
遗憾的是,没有简单的方法来禁用动画,因为它在实现中是硬编码的。
当我需要隐藏工具栏时,我将其视为另一个视图:
public void setToolbarVisible(boolean visible) {
mToolbar.setVisibility(visible
? View.VISIBLE
: View.GONE);
}
而且这个没有动画。否则你的代码完全没问题。
编辑:确保您的 ActionBar 的父布局中没有 android:animateLayoutChanges="true"
,因为这更有可能是动画问题的根源。
我想在 2 秒后以编程方式在 Android 中隐藏我的操作栏。
如果用户点击屏幕顶部,操作栏可以再次显示。
我环顾四周,发现了多种使用不同主题隐藏操作栏的方法。
然而,我的方法是这样的:
private void hideActionBar(){
if(getSupportActionBar().isShowing()){
getSupportActionBar().hide();
} else {
getSupportActionBar().show();
}
}
因此,有一个动画会随着整个屏幕拉起操作栏。
这应该像那样工作吗?
您可以像这样尝试禁用隐藏动画:
try
{
getSupportActionBar().getClass().getDeclaredMethod("setShowHideAnimationEnabled", boolean.class).invoke(getSupportActionBar(), false);
}
catch (Exception exception)
{
// The animation will still be displayed if an exception was thrown.
}
遗憾的是,没有简单的方法来禁用动画,因为它在实现中是硬编码的。
当我需要隐藏工具栏时,我将其视为另一个视图:
public void setToolbarVisible(boolean visible) {
mToolbar.setVisibility(visible
? View.VISIBLE
: View.GONE);
}
而且这个没有动画。否则你的代码完全没问题。
编辑:确保您的 ActionBar 的父布局中没有 android:animateLayoutChanges="true"
,因为这更有可能是动画问题的根源。