Ich habe folgendes Setup:Einstellung SupportActionBar Untertitel mehrzeilige
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:subtitleTextAppearance="@style/TitleTextStyle"
app:theme="@style/ActionBarStyle.Light"/>
und
<style name="TitleTextStyle">
<item name="android:maxLines">2</item>
<item name="android:textAllCaps">false</item>
</style>
und
getSupportActionBar().setSubtitle(targetString);
die @textAllCaps
angewendet wird, aber @maxLines
wird ignoriert (ich habe auch versucht, ` @minLines).
Wie aktiviert man mehrzeiligen Text im Untertitel?
TIA
UPDATE:
ich den Code in das onStart
hinzugefügt:
@Override
public void onStart() {
super.onStart();
try{
Field field = Toolbar.class.getDeclaredField("mSubtitleTextView");
field.setAccessible(true);
subtitleTextView = (TextView)field.get(toolbar);
subtitleTextView.setSingleLine(false);
subtitleTextView.setMaxLines(2);
subtitleTextView.setEllipsize(TruncateAt.END);
}catch(Exception e) {
Logg.e(this, "", e);
}
}
das Problem ist jetzt, dass die ellipsize Werte angewendet werden, aber setMaxLines()
Anruf ignoriert ...
UPD2:
setSingleLine(false)
hat den Trick gemacht.
eigentlich möchte ich den text nur programmatisch setzen, also würde reflection oder alike – injecteer
genau wie kann ich über die reflexion auf den textView des untertitels zugreifen? Was wäre die ID davon? – injecteer
@injecteer Ich habe der Antwort ein Codebeispiel hinzugefügt. Sie können 'mSubtitleTextView' nicht nach ID suchen, da es zur Laufzeit erstellt wurde und keine ID hat. Das Beste, was Sie tun können, ist, Ihre Benutzeroberfläche zu überdenken oder Ihre eigene 'Toolbar'-Klasse zu schreiben oder eine benutzerdefinierte Ansicht anstelle von Titel und Untertitel zu verwenden, greift direkt auf die privaten Felder der' Toolbar' zu. – Michael