0

Ich möchte in der Lage sein, die Größe des actionMode oder mindestens einen actionMode mit der gleichen Größe der Symbolleiste.ActionMode kleiner als die Symbolleiste in Querformat

Ich habe eine Symbolleiste mit fester Größe im Hoch- und Querformat. Ich benutze 56dp (Wert für die mobile Porträt-Symbolleiste) als Wert für beide.

Meine Symbolleiste ist in Ordnung. Das Problem ist, dass mein actionMode während der Orientierungsänderung den Standardwert von android? Attr/actionBarSize erhält. In der Landschaft habe ich also einen actionMode, der kleiner ist als die Symbolleiste.

Normaler ActionMode Code

if (actionMode == null) { 
    actionMode = ((AppCompatActivity)getActivity()).startSupportActionMode(actionModeCallback); 
} 

ich in onConfigurationChanged versucht, die Größe des actionMode zu ändern, aber ohne Glück. Dies ist ein Beispiel, um die Größe der Symbolleiste zu ändern. Anscheinend gibt es keine Möglichkeit, dasselbe für den actionMode zu tun. Irgendwelche Vorschläge? Danke

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE || newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { 
      Toolbar toolbar = ((MainActivity)getActivity()).getToolbar(); //my custom method to get the toolbar 
      if (toolbar != null) { 
       int toolbarHeight = (int)getResources().getDimension(R.dimen.toolbar_height); 
       toolbar.setMinimumHeight(toolbarHeight); 
       ViewGroup.LayoutParams lp = toolbar.getLayoutParams(); 
       lp.height = toolbarHeight; 
       toolbar.setLayoutParams(lp); 
      } 
     } 
    } 

Antwort

0

Ich fand die Lösung. Offensichtlich ist es egal, wenn Sie layout_height der Symbolleiste in Ihrem Layout und die Größe des actionModes im Stil festlegen, siehe unten.

ein Layout mit einer Symbolleiste mit fester Höhe

<android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="@dimen/toolbar_height" 
      android:minHeight="@dimen/toolbar_height" 
      app:popupTheme="@style/AppTheme.PopupOverlay"/> 

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

    <FrameLayout 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

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

style.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/primary</item> 
    <item name="colorPrimaryDark">@color/primaryDark</item> 
    <item name="colorAccent">@color/accent</item> 
</style> 
<style name="AppTheme.NoActionBar"> 
     <item name="windowActionBar">false</item> 
     <item name="windowNoTitle">true</item> 
     <item name="windowActionModeOverlay">true</item> 
     <item name="actionModeBackground">@color/actionMode</item> 
     <item name="actionModeStyle">@style/WindowActionMode</item> 
     <item name="actionBarSize">@dimen/toolbar_height</item> // This fix the issue 
    </style> 
<style name="WindowActionMode"> 
    <item name="android:height">@dimen/toolbar_height</item> 
    <item name="android:minHeight">@dimen/toolbar_height</item> 
</style> 

Sie haben auch die actionBarSize im Stil festgelegt.

<item name="actionBarSize">@dimen/toolbar_height</item> 

Ich denke, die actionMode das benutzen? Attr/actionBarSize also, wenn Sie eine feste Symbolleiste auch die actionBarSize in Ihrem Thema gesetzt verwenden möchten.

Verwandte Themen