Java 在片段视图中附加额外的工具栏
在仪表板上的我的应用程序中,有一个类似下图的应用程序栏 如图所示,我有一个工具栏,当前显示导航抽屉 从导航抽屉中,我可以导航到一个片段a,它替换了工具栏下的选项卡区域,如下图所示Java 在片段视图中附加额外的工具栏,java,android,xml,android-toolbar,Java,Android,Xml,Android Toolbar,在仪表板上的我的应用程序中,有一个类似下图的应用程序栏 如图所示,我有一个工具栏,当前显示导航抽屉 从导航抽屉中,我可以导航到一个片段a,它替换了工具栏下的选项卡区域,如下图所示 有没有什么方法可以添加两个这样的工具栏,在其中我可以在一个片段中同时显示导航抽屉图标和后退按钮?只是为了暂时更新,以实现上述目标,我所做的是 我在片段文件中添加了一个布局,在其中我绘制了一个自定义后退按钮,如下所示: <LinearLayout android:layout_width="match_
有没有什么方法可以添加两个这样的工具栏,在其中我可以在一个片段中同时显示导航抽屉图标和后退按钮?只是为了暂时更新,以实现上述目标,我所做的是 我在片段文件中添加了一个布局,在其中我绘制了一个自定义后退按钮,如下所示:
<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>
上面的代码为我提供了所需的功能
注意,要使上述操作正常工作,您需要确保将您的fragmentTransaction添加到backstack,如下所示
final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.home_content_layout,NAME_OFYOUR_FRAGMENT,"nameOfYourFragment");
transaction.addToBackStack(null);
transaction.commit();
没有最好的方法来实现你所追求的,因为这是违反规则的。虽然没有明确说明,但导航抽屉图标和后退按钮图标从未一起显示
这种设计背后的理论是导航应该是直观的和可预测的,显示两个相邻的导航图标有损于直观的用户界面。如果有要返回的内容,则应显示“返回”按钮。不过,持久导航的需要可以通过两种不同的方式来解决。以谷歌的应用程序为例
默认情况下,支持使用屏幕左边缘的滑动作为打开导航抽屉的手势。在Gmail应用程序中,当你在任何一个收件箱中时,导航抽屉图标会显示出来。选择消息后,导航抽屉图标将立即替换为后退按钮。不过,您会注意到,您仍然可以使用前面所述的手势访问抽屉
在更大的屏幕上,Gmail应用程序支持微型导航抽屉。此抽屉可以保持在视图中,而无需显示导航图标。虽然这在当前的支持库中实现起来有点困难,但如果您愿意,可能会有所帮助
最后,为了回答您的问题,没有内置的方式来同时显示后退按钮和导航抽屉图标。如果你需要这样做,唯一的办法就是使用“变通办法”,就像你现在这样
不过,我可能会做的唯一更改是使用一个而不是
ImageView
。然后,您可以使用style=“?android:attr/actionButtonStyle”
来设置按钮的样式,以模仿ActionBar
按钮的外观。您可以随时更新您的问题(单击),这不属于答案。根据您的更新,您似乎找到了一种实现您所问内容的方法。你只是想用不同的方法来实现同样的目标吗?如果是这样,为什么您当前的实现还不够?我确实找到了解决问题的方法,我在想是否有最好的方法来实现上述目标,因为我发布的解决方案更像是一种解决方法。感谢Bryan抽出时间帮助我解决此问题。我现在已将ImageView替换为ImageButton,看起来确实不错。干杯
final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.home_content_layout,NAME_OFYOUR_FRAGMENT,"nameOfYourFragment");
transaction.addToBackStack(null);
transaction.commit();