我希望能够调整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);
}
}
}
答案 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。