Android工具栏上的动画后退按钮
我有一个活动,它有一个工具栏,显示一个后退按钮Android工具栏上的动画后退按钮,android,android-animation,android-toolbar,Android,Android Animation,Android Toolbar,我有一个活动,它有一个工具栏,显示一个后退按钮 <android.support.v7.widget.Toolbar android:id="@+id/toolbar_about" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" and
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_about"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:title="@string/app_name"
/>
我把我的主要活动称为:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_about);
setSupportActionBar(toolbar);
//noinspection ConstantConditions
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
Intent intent = new Intent(this, AboutActivity.class);
startActivity(intent);
活动的父级在清单中定义
<activity android:name=".AboutActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".EntryActivity" />
</activity>
到目前为止,一切正常,除了使用工具栏中的“后退”按钮时过渡动画错误
当我打开活动时,它会从右侧滑入
当我按下手机的物理后退按钮时,它会再次向右滑动。这是正确的
但是,当使用工具栏上的“后退”按钮时,它会滑出到左侧。这看起来不对。如何更改此设置,使其复制物理后退按钮的行为?当您按下Actionbar Up按钮时,
AppCompatActivity
在其onMenuItemSelected()
调用中检测此按钮按下,并调用onSupportNavigateUp()
。此方法确定“父活动”的意图,并使用该意图向上导航。因为它使用Intent
来(重新)打开以前的活动,所以它使用与打开“新”屏幕相同的动画
假设您不关心“向上导航”模式的具体细节(听起来您不关心,因为评论让我相信您没有横向导航,除了第一个活动之外,您无法从任何地方进入第二个活动),您可以避开所有内置的“向上”通过重写onSupportNavigateUp()
方法的行为
@Override
public boolean onSupportNavigateUp() {
finish();
return true;
}
这意味着按下Actionbar Up按钮总是简单地finish()
es你的活动,所以(就像我之前说的)你失去了所有智能内置的“Up”行为。。。但你也不想那样
您也可以在onoptionItemSelected()
中处理Actionbar Up按钮,但我更喜欢另一种方式,因为我认为您劫持系统的Up行为更为明显
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
有了这两个选项中的任何一个,您都可以从清单中删除“父”定义,因为现在它们没有被使用。尝试以下方法:
override-fun-onSupportNavigateUp():布尔值{
onBackPressed()
返回真值
}
您确实需要在清单中定义父活动吗?我的意思是,您是否支持横向导航与分层导航,或者您是否能够从EntryActivity
以外的任何位置打开关于触觉
。我只有这两个活动,所以是的,活动只能从另一个呼叫。谢谢您的详细回复。我没有想到onOptionsItemSelected()甚至会有关联,但这会让我感到惊讶,因为工具栏也应该处理菜单。但是你是对的onSupportNavigateUp()覆盖对于我的用例来说已经完全足够了。再次感谢。