0

Я хрипло, если есть способ сделать меню CollapsingToolbarLayout внутри фрагмента без определения пользовательского макета внутри него. На макете телефона я сделал DetailActivity, в котором есть меню внутри. enter image description hereCollapsingToolbarLayout Меню внутри фрагмента

На планшетах планшета я сделал детали в фрагмент с правой стороны. CollapsingToolbarLayout работает нормально, но я не могу добавить к нему какое-либо меню.

Я знаю о Fragment.setHasOptionsMenu(true);, но я не хочу объединять свое подробное меню с меню деятельности.

PS: Изображения, которые я использовал здесь, получены от TMDb и являются бесплатными.

ответ

1

Я уже погружаюсь в CollapsingToolbarLayout и просматривает его, но я не думаю, что это можно сделать. Поэтому для обходного пути я создаю ImageView с пиктограммой переполнения меню, и под ним появляется список показа, чтобы имитировать поведение меню действий. Вот мой CollapsingToolbarLayout выглядит в XML

<android.support.design.widget.CollapsingToolbarLayout 
    android:fitsSystemWindows="false" 
    android:id="@+id/collapsing_toolbar" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    app:contentInsetStartWithNavigation="0dp" 
    app:contentScrim="?attr/colorPrimary" 
    app:expandedTitleMarginEnd="64dp" 
    app:expandedTitleMarginStart="48dp" 
    app:layout_scrollFlags="exitUntilCollapsed|scroll"> 

    <your.app.AutoFitImageView 
     android:fitsSystemWindows="false" 
     android:id="@+id/iv_backdrop_image" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:scaleType="fitCenter" 
     android:transitionName="image" 
     app:layout_collapseMode="parallax" 
     tools:targetApi="lollipop"/> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_height="?attr/actionBarSize" 
     android:layout_width="match_parent" 
     app:layout_collapseMode="pin" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light"> 

     <ImageView 
      android:id="@+id/button_menu" 
      android:layout_gravity="right" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content" 
      android:minHeight="48dp" 
      android:minWidth="48dp" 
      android:scaleType="centerInside" 
      android:src="@drawable/ic_action_overflow"/> 
    </android.support.v7.widget.Toolbar> 

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

Тогда я установить clickListener в ImageView с R.id.button_menu ид вызвать этот метод:

private void showListMenu(View anchor) { 
    final ListPopupWindow popupWindow = new ListPopupWindow(getActivity()); 

    List<HashMap<String, String>> data = new ArrayList<>(); 

    HashMap<String, String> map1 = new HashMap<>(); 
    map1.put("menu", "Share Detail"); 

    HashMap<String, String> map2 = new HashMap<>(); 
    map2.put("menu", "Share First Trailer"); 

    data.add(map1); 
    data.add(map2); 

    final Movie movieData = getMovieData(); 
    HashMap<String, String> map3 = new HashMap<>(); 
    if (DbHelper.movieInDb(movieData)) { 
     map3.put("menu", getString(R.string.unfavorite)); 
    } else { 
     map3.put("menu", getString(R.string.favorite)); 
    } 
    data.add(map3); 

    ListAdapter adapter = new SimpleAdapter(
      getActivity(), 
      data, 
      android.R.layout.simple_list_item_1, // You may want to use your own cool layout 
      new String[]{"menu"}, // These are just the keys that the data uses 
      new int[]{android.R.id.text1}); // The view ids to map the data to 

    popupWindow.setAnchorView(anchor); 
    popupWindow.setAdapter(adapter); 

    DisplayMetrics displaymetrics = new DisplayMetrics(); 
    getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
    popupWindow.setWidth(displaymetrics.widthPixels/3); // note: don't use pixels, use a dimen resource 

    popupWindow.setOnItemClickListener(yourListener); // the callback for when a list item is selected 
    popupWindow.show(); 
} 

Метод покажет ListPopUpWindow, который имеет такой же стиль, как меню переполнения действия при нажатии. Вот окончательный макет выглядит как enter image description here

+0

Очень умное и очень полезное решение. –