Obwohl das Hinzufügen einer Textansicht zur Symbolleiste das Problem der Einschränkung des Titelstils lösen kann, gibt es ein Problem damit. Da wir es keinem Layout hinzufügen, haben wir nicht zu viel Kontrolle über seine Breite. Wir können entweder wrap_content oder match_parent verwenden.
Stellen Sie sich nun ein Szenario vor, in dem eine Suchansicht als Schaltfläche am rechten Rand der Symbolleiste angezeigt wird. Wenn der Titelinhalt mehr ist, wird er über der Schaltfläche angezeigt, wodurch er verdeckt wird. Es gibt keine Möglichkeit, diesen Kurzschluss beim Festlegen einer Breite für das Etikett zu steuern, und Sie möchten dies nicht tun, wenn Sie ein ansprechendes Design wünschen.
Hier ist eine Lösung, die für mich funktioniert hat und sich geringfügig vom Hinzufügen einer Textansicht zur Symbolleiste unterscheidet. Fügen Sie stattdessen die Symbolleiste und die Textansicht zu einem relativen Layout hinzu und stellen Sie sicher, dass sich die Textansicht oben auf der Symbolleiste befindet. Dann können wir geeignete Ränder verwenden und sicherstellen, dass die Textansicht dort angezeigt wird, wo sie angezeigt werden soll.
Stellen Sie sicher, dass Sie die Symbolleiste so einstellen, dass der Titel nicht angezeigt wird.
Hier ist das XML für diese Lösung:
<RelativeLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary">
<android.support.v7.widget.Toolbar
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:id="@+id/activity_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:titleTextAppearance="@style/AppTheme.TitleTextView"
android:layout_marginRight="40dp"
android:layoutMode="clipBounds">
<android.support.v7.widget.SearchView
android:id="@+id/search_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:foregroundTint="@color/white" />
</android.support.v7.widget.Toolbar>
<TextView
android:id="@+id/toolbar_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="90dp"
android:text="@string/app_name"
android:textSize="@dimen/title_text_size"
android:textColor="@color/white"
android:lines="1"
android:layout_marginLeft="72dp"
android:layout_centerVertical="true" />
</RelativeLayout>
Behebt das oben erwähnte Problem @ ankur-chaudhary.