ActionMode小于横向的工具栏

时间:2016-08-17 15:23:31

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

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

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

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

正常的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);
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。显然,如果在布局中设置工具栏的layout_height以及样式中actionMode的大小,则无关紧要,请参见下文。

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

select

style.xml

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

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

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

我想actionMode使用?attr / actionBarSize,所以如果你想在主题中使用固定的工具栏设置actionBarSize。