As others have pointed out, you should save and restore the state of the instance instead of changing the configuration settings if possible. If you have every reason not to do this, you can try updating the height and text of the toolbar after changing the configuration.
The following code should work for the Toolbar support library version. The actionBarSize , titleTextAppearance and subtitleTextAppearance attributes are provided by the support library.
The code assumes that you have the custom attribute appToolbarStyle declared in attrs.xml . If you do not need that, you can adapt the code to use R.style.Widget_AppCompat_Toolbar directly.
import android.support.v7.widget.Toolbar; ... private Toolbar toolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); toolbar = findViewById(R.id.toolbar); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); updateToolbar(); } private void updateToolbar() { if (toolbar == null) return; final Context context = toolbar.getContext(); int[] attr = new int[] { R.attr.actionBarSize, R.attr.appToolbarStyle }; int idxActionBarSize = 0; int idxAppToolbarStyle = 1; TypedArray a = context.obtainStyledAttributes(attr); int actionBarSize = a.getDimensionPixelSize(idxActionBarSize, 0); int appToolbarStyle = a.getResourceId(idxAppToolbarStyle, R.style.Widget_AppCompat_Toolbar); a.recycle(); if (actionBarSize != 0) { ViewGroup.LayoutParams layoutParams = toolbar.getLayoutParams(); if (layoutParams != null) { layoutParams.height = actionBarSize; } toolbar.setMinimumHeight(actionBarSize); } attr = new int[] { R.attr.titleTextAppearance, R.attr.subtitleTextAppearance }; int idxTitleTextAppearance = 0; int idxSubtitleTextAppearance = 1; a = context.obtainStyledAttributes(appToolbarStyle, attr); int titleTextAppearance = a.getResourceId(idxTitleTextAppearance, 0); int subtitleTextAppearance = a.getResourceId(idxSubtitleTextAppearance, 0); a.recycle(); if (titleTextAppearance != 0) { toolbar.setTitleTextAppearance(context, titleTextAppearance); } if (subtitleTextAppearance != 0) { toolbar.setSubtitleTextAppearance(context, subtitleTextAppearance); } toolbar.requestLayout(); }
source share