在我的仪表板应用程序中,有一个应用程序栏,如下图所示。在片段视图中附加额外的工具栏
正如图所示,我有一个工具栏,目前显示导航抽屉。
从导航抽屉中,我可以导航到片段A,替换工具栏下的TAB区域,如下图所示。
有什么办法,我可以添加两个工具栏这样的地方,我可以告诉一起片段内的导航抽屉图标和后退按钮?
在我的仪表板应用程序中,有一个应用程序栏,如下图所示。在片段视图中附加额外的工具栏
正如图所示,我有一个工具栏,目前显示导航抽屉。
从导航抽屉中,我可以导航到片段A,替换工具栏下的TAB区域,如下图所示。
有什么办法,我可以添加两个工具栏这样的地方,我可以告诉一起片段内的导航抽屉图标和后退按钮?
没有达到你在找什么没有最佳方式,考虑到它会对Android Design Guidelines。虽然没有明确说明,但抽屉式图标和后退按钮图标不会一起显示。
这个设计背后的理论是导航应该是直观和可预测的,两个导航图标相邻显示会损害直观的用户界面。 返回按钮应显示如果有什么要去返回到。虽然,持久导航的需求可以通过两种不同的方式解决。以Google的Gmail应用为例。
默认情况下,NavigationView
支持使用屏幕左边缘的轻扫作为手势打开导航抽屉。在Gmail应用程序中,当您位于任何一个收件箱中时,会显示导航抽屉图标。只要选择一条消息,导航抽屉图标就会被替换为返回按钮。但是,您会注意到您仍然可以使用之前所述的手势访问抽屉。
在更大屏幕上,Gmail应用支持微型导航抽屉。该抽屉可以保持在视图中而不需要显示导航图标。尽管使用当前的支持库实现起来要困难一点,但如果您期待,this answer可能会有所帮助。
最后,要回答你的问题,还有就是显示一个后退按钮和抽屉式导航图标一起没有内置的方式。如果您需要这样做,唯一的方法就是像现在一样使用“解决方法”。
虽然,我可能会做的唯一的变化是使用ImageButton
而非ImageView
。然后,您可以使用style="?android:attr/actionButtonStyle"
来设置按钮的样式,以模仿ActionBar
按钮的外观。
谢谢布赖恩,为了拉出一些时间,并帮助我解决这个问题。我已经将ImageView替换为ImageButton,这绝对看起来不错。干杯! –
只是为了更新,暂时实现上述我所做的是。
我添加了一个布局,我的片段文件,其中我画一个自定义后退按钮这样的:
<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到堆栈中,如下
final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.home_content_layout,NAME_OFYOUR_FRAGMENT,"nameOfYourFragment");
transaction.addToBackStack(null);
transaction.commit();
您可以随时更新您的问题(点击[*编辑*](http://stackoverflow.com/posts/38436040/edit)),这不属于答案。 – Bryan
谢谢布莱恩。将为未来记住这一点。 –
根据你的更新,它看起来像你找到了一种方法来实现你的要求。你只是要求一个*不同的方式来实现同样的事情吗?如果是这样,为什么你目前的实施不足够? – Bryan
我肯定找到了一种方法来实现这个问题,我在想如果有一个最好的实现上述,因为我发布的解决方案更多的是我想的解决方法.. –