Android支持工具栏:调整大小不会重新对齐菜单项

4

我试图在屏幕方向改变时调整我的Activity的Android支持工具栏的大小,因为在横屏模式下它太大了。由于我正在使用,它不会自动调整大小。

android:configChanges="orientation|screenSize"

在我的活动上,因此活动不会重新创建。 工具栏XML如下:

<android.support.v7.widget.Toolbar
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/my_awesome_toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary" />

在我的onConfigurationChanged()方法中,我正在调整工具栏的大小,例如:

findViewById(R.id.my_awesome_toolbar).setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 114));

结果与预期不符,使用 setSupportActionBar(toolbar); 填充菜单项和使用 onCreateOptionsMenu() 都不能正确地垂直对齐,导航图标 (toolbar.setNavigationIcon(...)) 也是如此:

有人知道更好的调整工具栏大小的方法吗?或者我需要使用删除并重新添加工具栏到视图堆栈等解决方案吗?


你可以尝试将android:layout_height="?attr/actionBarSize"更改为android:layout_height="wrap_content"吗? - Ye Lin Aung
@YeLinAung 那样做行不通。正如所述,工具栏高度在旋转时不会自动更改,因此将其设置为wrap_content也不会改变任何内容。 - Boni2k
你试过了吗? - Ye Lin Aung
我打开了一个错误报告:https://code.google.com/p/android/issues/detail?id=79813 - Boni2k
1个回答

2
只需调用setMinimumHeight来设置工具栏的最小高度即可。
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    Toolbar tb = getActionBarToolbar();
    if (tb != null) {
        int size = UIUtils.calculateActionBarSize(this);
        tb.setMinimumHeight(size);
        ViewGroup.LayoutParams lp = tb.getLayoutParams();
        lp.height = size;
        tb.setLayoutParams(lp);
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接