1

Wie wir wissen, sollte die Höhe der Symbolleiste im Hochformat (56dp) und Querformat (48dp) unterschiedlich sein. Gibt es eine Möglichkeit, die Höhe der Symbolleiste zu ändern (und den Titel und die Bilder auch zu skalieren), wenn die Ausrichtung geändert wird?Android responsive Symbolleiste Höhe

ich diese Linie in AndroidManifest stark speichern wollen, denn es ist sehr nützlich für andere Zwecke ist.

android:configChanges="orientation|screenSize" 

(Es ist nützlich Aufenthalt Toolbar-Menüs bei der Suche Ich weiß nicht wirklich eine schöne Art und Weise es ohne android:configChanges)

Antwort

0

es ist eine hässliche Art und Weise zu tun, das zu tun, wie Sie wissen, was die Höhe sein, indem Sie einen benutzerdefinierten TextView als Titel innerhalb der ToolBar verwenden und später alles skalieren, wenn der Benutzer das Telefon drehen.

<android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:popupTheme="@style/AppTheme.PopupOverlay" > 

     <TextView 
      android:textColor="?android:textColorPrimary" 
      android:id="@+id/titleTextView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      /> 

</android.support.v7.widget.Toolbar> 

Und hier in Ihrem Activity ‚s onConfigurationChanged, ändern wir die ToolBar‘ s Höhe direkt und stellen Sie die Textgröße unserer eigenen Titel;

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    View tb = findViewById(R.id.toolbar); 
    TextView titleTextVIew = (TextView) findViewById(R.id.titleTextView); 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     tb.getLayoutParams().height = (int) Tool.convertDpToPixel(48, this); 
     titleTextVIew.setTextSize(TypedValue.COMPLEX_UNIT_SP,15); 
    }else { 
     tb.getLayoutParams().height = (int) Tool.convertDpToPixel(56, this); 
     titleTextVIew.setTextSize(TypedValue.COMPLEX_UNIT_SP,20); 
    } 
    super.onConfigurationChanged(newConfig); 
}