在仪表板上的应用程序中,有一个应用程序栏,其外观如下图所示。
如图所示,我有一个工具栏,当前显示导航抽屉。
在导航抽屉中,我可以导航到一个片段A,它取代了工具栏下的TAB区域,如下图所示。
有什么方法可以添加这样的两个工具栏,我可以在片段中一起显示导航抽屉图标和后退按钮吗?
答案 0 :(得分:0)
没有最佳方式来实现您所寻找的目标,因为它与Android Design Guidelines相反。虽然没有明确说明,但导航抽屉图标和后退按钮图标永远不会一起显示。
这种设计背后的理论是导航应该是直观和可预测的,显示两个彼此相邻的导航图标会降低直观的用户界面。如果有返回的内容,则应显示后退按钮。但是,可以通过两种不同的方式解决对持久导航的需求。以Google的Gmail应用为例。
默认情况下,NavigationView
支持使用屏幕左边缘的滑动作为打开导航抽屉的手势。在Gmail应用中,当您在任何一个收件箱中时,都会显示导航抽屉图标。选择消息后,导航抽屉图标将替换为后退按钮。但是,您会注意到仍然可以使用之前说明的手势访问抽屉。
在较大的屏幕上,Gmail应用程序支持微型导航抽屉。此抽屉可以保持在视图中,而无需显示导航图标。虽然使用当前支持库实现起来有点困难,但如果您希望这样做,this answer可能会有所帮助。
最后,要回答您的问题,没有内置方法可以同时显示后退按钮和导航抽屉图标。如果你需要这样做,唯一的办法就是使用“解决方法”,就像你现在一样。
尽管如此,我可能做的唯一改变是使用ImageButton
而不是ImageView
。然后,您可以使用style="?android:attr/actionButtonStyle"
设置按钮的样式,以模仿ActionBar
按钮的外观。
答案 1 :(得分:-2)
暂时更新以实现上述目标。
我在片段文件中添加了一个布局,我在其中绘制了一个自定义后退按钮:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimaryDark20"
android:orientation="horizontal"
android:padding="15dp"
android:weightSum="3">
<ImageView
android:id="@+id/backButton"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="left"
android:layout_weight="0.2"
android:src="@drawable/delete_icon" />
</LinearLayout>
当一个人点击backImage时,我会调用popBackStack
。
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getFragmentManager().popBackStack();
}
});
上面的代码为我提供了所需的功能。
注意,要使上述工作正常,您需要确保将fragmentTransaction添加到backstack,如下所示
final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.home_content_layout,NAME_OFYOUR_FRAGMENT,"nameOfYourFragment");
transaction.addToBackStack(null);
transaction.commit();