Подтвердить что ты не робот

Заголовок панели действий с несколькими строками?

Можно ли создать заголовок в панели действий с несколькими строками? Мне нужен двойной промежуточный заголовок.

4b9b3361

Ответ 1

Я не совсем уверен, что вы искали следующее, но:

actionBar.setSubtitle(строка строки) устанавливает вторую строку с меньшим шрифтом под вашим основным заголовком.

Пример:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_left_drawer_item_clicked);
        String value = getIntent().getExtras().getString("drawerItemString");

        ActionBar actionBar = getActionBar();
        // Make sure we're running on Honeycomb or higher to use ActionBar APIs
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            // Show the Up button in the action bar.
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
        actionBar.setTitle(selectedBook.getTitle());
        actionBar.setSubtitle(selectedBook.getAuthorName());

}

Ответ 2

Я нашел лучшее решение, которое отлично работает с Android 4.2.2, где значок и заголовок являются одним кликабельным элементом.

int titleId = Resources.getSystem()
        .getIdentifier("action_bar_title", "id", "android");
if (titleId > 0) {
    TextView title = (TextView) findViewById(titleId);
    title.setSingleLine(false);
    title.setMaxLines(2);
    title.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
}

Если вы используете ActionBarSherlock, используйте этот код:

int titleId = Resources.getSystem()
        .getIdentifier("action_bar_title", "id", "android");
if (titleId == 0) {
    titleId = com.actionbarsherlock.R.id.abs__action_bar_title;
}
TextView title = (TextView) findViewById(titleId);
if (title != null) {
    title.setSingleLine(false);
    title.setMaxLines(2);
    title.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
}

Ответ 3

По умолчанию TextView на ActionBar не поддерживает перенос строк, и нет способа выставления обтекаемого объекта. Поэтому создайте гибкий макет, например: action_bar_title_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

<TextView
    android:id="@+id/action_bar_title"
    android:layout_height="match_parent"
    android:layout_width="wrap_content"
    android:gravity="center_vertical"
    android:ellipsize="end"
    android:maxLines="2"/>

</LinearLayout>

Затем установите это как пользовательский макет на ActionBar:

ActionBar actionBar = getActionBar();
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(R.layout.action_bar_title_layout);
((TextView) findViewById(R.id.action_bar_title)).setText(
    "This is a long text title that will wrap to multiple lines, when necessary.");

Ответ 4

Нет, но вы можете заменить значок графикой отдельного логотипа (android:logo, а затем setDisplayUseLogoEnabled()). Вы можете вставить свой двухстрочный заголовок как часть логотипа логотипа, а затем не показывать оригинальную строку заголовка через setDisplayShowTitleEnabled(). AFAIK, эта комбинация должна работать.