tôi có các thiết lập sau:Thiết SupportActionBar subtitle multiline
<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"/>
và
<style name="TitleTextStyle">
<item name="android:maxLines">2</item>
<item name="android:textAllCaps">false</item>
</style>
và
getSupportActionBar().setSubtitle(targetString);
các @textAllCaps
được áp dụng, nhưng @maxLines
bị lờ đi (Tôi cũng đã cố gắng ' @minLines).
Làm cách nào để bật văn bản nhiều dòng phụ đề?
TIA
UPDATE:
tôi đã thêm mã vào 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);
}
}
vấn đề bây giờ là, rằng các giá trị ellipsize được áp dụng, nhưng setMaxLines()
gọi được bỏ qua ...
UPD2:
setSingleLine(false)
đã thực hiện thủ thuật.
thực sự tôi muốn đặt văn bản chỉ theo chương trình, do đó, phản chiếu hoặc giống nhau sẽ thực hiện – injecteer
chính xác như thế nào tôi có thể truy cập vào 'textView' của phụ đề qua phản ánh? những gì sẽ là id của nó? – injecteer
@injecteer Tôi đã thêm một mẫu mã vào câu trả lời. Bạn không thể tìm thấy 'mSubtitleTextView' theo id bởi vì nó được tạo ra trong thời gian chạy và không có và id. Vì vậy, điều tốt nhất bạn có thể làm bên cạnh việc xem xét lại giao diện người dùng của mình hoặc viết lớp 'Thanh công cụ 'của riêng bạn hoặc sử dụng chế độ xem tùy chỉnh thay cho tiêu đề và phụ đề đang truy cập trực tiếp vào các trường riêng tư của Thanh công cụ. – Michael