Мне кажется, что это невозможно с темами и стилями, но я нашел обходной путь для установки значения размера эллипса во время выполнения.
Самое сложное - это найти заголовок (или подзаголовок) TextView, потому чтоидентификатор этого представления находится во внутреннем пакете Android.
Так что вам нужно создать класс заглушки в вашем проекте
package com.android.internal;
public class R {
public static final class id {
public static int action_bar_title = 0;
public static int action_bar_subtitle = 0;
}
}
После этого вам нужно найти это представление в коде (я делаю это сследующий код, он работает как с sherlock, так и с панелями действий по умолчанию)
public class ActionBarUtils {
public static TextView getActionbarTitle(Activity activity) {
TextView title = (TextView) activity.findViewById(R.id.abs__action_bar_title);// for ActionBarSerlock
if (title == null) title = (TextView) activity.findViewById(com.android.internal.R.id.action_bar_title);// for default action bar
return title;
}
}
Теперь вы можете установить значение эллипса в коде активности:
getActionBarTitle().setEllipsize(TextUtils.TruncateAt.MIDDLE)
PS: убедитесь, чтоВы вызываете getActionBarTitle, когда заголовок виден (после вызова setDisplayShowTitleEnabled (true)), в противном случае вы получите NullPointerException.
PPS: если вы используете обфускацию proguard, вы должны добавить в proguard.cfg:
-keep class com.android.internal.R*{
*;
}