Mam następującą konfigurację:Ustawianie SupportActionBar napisów multilinii
<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"/>
i
<style name="TitleTextStyle">
<item name="android:maxLines">2</item>
<item name="android:textAllCaps">false</item>
</style>
i
getSupportActionBar().setSubtitle(targetString);
@textAllCaps
jest stosowany, ale @maxLines
jest ignorowany (próbowałem też ` @minLines).
Jak włączyć tekst wielowierszowy w podtytule?
TIA
UPDATE:
I dodaje kod do onStart
:
@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);
}
}
problem jest teraz, że wartości ellipsize są stosowane, ale setMaxLines()
wezwanie jest ignorowany ...
UPD2:
setSingleLine(false)
załatwił sprawę.
w rzeczywistości chcę ustawić tekst tylko programowo, więc odbicie lub podobny zrobiłby – injecteer
jak dokładnie mogę uzyskać dostęp do "textView" napisów przez odbicie? jaki byłby jego identyfikator? – injecteer
@ Injecteer Dodałem próbkę kodu do odpowiedzi. Nie można znaleźć 'mSubtitleTextView' według id, ponieważ jest on tworzony w czasie wykonywania, a nie ma i id. Najlepszą rzeczą, którą możesz zrobić, oprócz ponownego przemyślenia interfejsu użytkownika lub napisania własnej klasy "paska narzędzi" lub użycia niestandardowego widoku zamiast tytułu i podtytułu, jest dostęp do prywatnych pól 'Toolbar'ów bezpośrednio przez odbicie. – Michael