And*_*ohr 4 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"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:title="@string/app_name"
/>
Run Code Online (Sandbox Code Playgroud)
后退按钮是这样启用的:
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar_about);
setSupportActionBar(toolbar);
//noinspection ConstantConditions
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
Run Code Online (Sandbox Code Playgroud)
我从我的主要活动中调用此活动,如下所示:
Intent intent = new Intent(this, AboutActivity.class);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
Activity 的父级在清单中定义
<activity android:name=".AboutActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".EntryActivity" />
</activity>
Run Code Online (Sandbox Code Playgroud)
到目前为止一切正常,只是在使用工具栏中的后退按钮时过渡动画是错误的。
当我打开活动时,它从右侧滑入。
当我按下手机的物理后退按钮时,它再次向右滑出。这是对的。
但是,当使用工具栏后退按钮时,它会向左滑出。这看起来不对。我该如何更改它,使其复制物理后退按钮的行为?
当您按下 Actionbar Up 按钮时,AppCompatActivity在其onMenuItemSelected()调用中检测到此按钮按下,并调用onSupportNavigateUp(). 此方法确定“父活动”Intent并使用它向上导航。因为它使用Intent(重新)打开前一个活动,所以它使用与打开“新”屏幕相同的动画。
假设你不关心“向上导航”模式的特殊细节(听起来你不关心,因为评论让我相信你没有横向导航,你无法进入第二个活动从您的第一个活动以外的任何地方),您可以通过覆盖该onSupportNavigateUp()方法来回避所有这些内置的“向上”行为。
@Override
public boolean onSupportNavigateUp() {
finish();
return true;
}
Run Code Online (Sandbox Code Playgroud)
这意味着按下 Actionbar Up 按钮总是简单的finish()es 你的活动,所以(就像我之前说的)你失去了所有智能内置的“向上”行为......但无论如何你都不想要。
您也可以在 中处理 Actionbar Up 按钮onOptionsItemSelected(),但我更喜欢另一种方式,因为我认为您正在劫持系统的 up 行为更明显一点。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
Run Code Online (Sandbox Code Playgroud)
有了这些中的任何一个,您就可以从清单中删除“父”定义,因为现在它们没有被使用。
| 归档时间: |
|
| 查看次数: |
3456 次 |
| 最近记录: |