在CollapsingToolbarLayout问题中膨胀菜单

时间:2015-07-31 12:50:13

标签: android androiddesignsupport

我正在使用设计支持库的CollapsingToolbarLayout。我的问题是我无法使工具栏中的菜单操作图标膨胀。我使用以下代码创建CollapsingToolbarLayout。

<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar_layout"
    android:layout_width="match_parent"
    android:layout_height="240dp">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:expandedTitleMarginBottom="32dp"
        app:expandedTitleMarginEnd="64dp"
        app:expandedTitleMarginStart="48dp"
        app:layout_scrollFlags="scroll|exitUntilCollapsed">
        <ImageView
            android:id="@+id/profile_image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            android:scaleType="centerCrop"
            app:layout_collapseMode="parallax" />
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_collapseMode="pin"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
    </android.support.design.widget.CollapsingToolbarLayout>


</android.support.design.widget.AppBarLayout>

在Fragment中我使用

 @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.menu_emp_details, menu);
    super.onCreateOptionsMenu(menu,inflater);
}

setHasOptionsMenu(true);

2 个答案:

答案 0 :(得分:10)

有两种方法可以做到: 首先,您需要告诉Activity Toolbar您使用的Action BarsetSupportActionBar(toolbar)使用:Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); toolbar.inflateMenu(R.menu.your_menu_items); toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem menuItem) { TODO: Write your logic here } });

否则(我推荐):

java.lang.NullPointerException

答案 1 :(得分:4)

我相信当您说“工具栏中的操作图标”时,您的意思是工具栏左侧的UP操作。

如果您指的是带有3点图标的右侧菜单,@ Janhavi答案是正确的。如果您的意思是左侧的UP图标,请阅读以下内容:

您需要在扩充布局后在工具栏上对其进行配置,如下面的代码:

@Override
public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// inflate your view normally
View root = inflater.inflate(R.layout.my_layout, container, false);

// configure your views
Toolbar toolbar = (Toolbar)root.findViewById(R.id.toolbar);
toolbar.setNavigationIcon(R.drawable.icon);
toolbar.setNavigationOnClickListener(new View.OnClickListener(){
    @Override public void onClick(View v){
        // TODO: code your UP navigation here
        // probably: getFragmentManager().popBackStack ?
    }
});

// return the view
return root;
}

您可以从此处下载的图标:https://www.google.com/design/icons/