【问题标题】:ActionMode smaller than the Toolbar in landscapeActionMode 比横向工具栏小
【发布时间】:2016-08-18 21:43:28
【问题描述】:

我希望能够调整 actionMode 的大小,或者至少有一个与工具栏大小相同的 actionMode。

我有一个纵向和横向尺寸固定的工具栏。我使用 56dp(移动纵向工具栏值)作为两者的值。

我的工具栏没问题。问题是,在方向更改期间,我的 actionMode 从 android ?attr/actionBarSize 获取默认值,因此在横向中,我最终得到的 actionMode 小于工具栏。

普通动作模式代码

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

我尝试在 onConfigurationChanged 中更改 actionMode 的大小,但没有成功。这是更改工具栏大小的示例。显然没有办法对 actionMode 做同样的事情。有什么建议么?谢谢

@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);
            }
        }
    }

【问题讨论】:

    标签: android android-toolbar landscape-portrait android-actionmode


    【解决方案1】:

    我找到了解决方案。显然,如果您在布局中设置工具栏的 layout_height 和在样式中设置 actionMode 的大小并不重要,请参见下文。

    具有固定高度的工具栏的布局

        <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>
    

    您还必须在样式中设置 actionBarSize。

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

    我猜 actionMode 使用 ?attr/actionBarSize 所以如果你想使用一个固定的工具栏集也可以在你的主题中使用 actionBarSize。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 2015-03-18
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多