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

см.: http://i.imgur.com/iwikd69.png (единственный "lorem "это подзаголовок)

Я использую библиотеку appcompat v7.21. Я хотел бы установить заголовок для панели инструментов, и если он слишком длинный, он должен отображаться так, как сейчас (верхний пример на прикрепленном изображении), только 1 строка, и он заканчивается ..., если он не подходит. Однако я хочу, чтобы панель инструментов расширялась (а затем сворачивалась соответственно) onClick (возможно, как-то анимировалась) и показывала полный заголовок (нижний пример)

Теперь мне не хватает нескольких вещей здесь:

  • Я не вижу никакого метода, который бы сказал мне, подходит ли название или нет. (getSupportActionBar().isTitleTruncated() возвращает false, даже если заголовок не подходит, но, возможно, это не тот метод, который мне нужен, это даже не метод Toolbar класс)

  • Кажется, я не могу установить высоту панели инструментов программно (даже если бы я мог, анимация была бы еще более болезненной, потому что я нацелился на >=api15)

Можно ли выполнить то, что я хочу, или мне нужно найти другое решение?

Спасибо


person chrystolin    schedule 24.10.2014    source источник


Ответы (1)


создать пользовательскую панель инструментов вот пример

/**
 * Create the Action Bar and set the Custom View to it.
 * Set content insets absolute (0,0) to hide the bottom margin for Action Bar.
 *
 */
public void initializeAppToolbar()
{
    actionbar = getSupportActionBar();
    actionbar.setDisplayShowHomeEnabled(false);
    actionbar.setDisplayShowCustomEnabled(true);
    actionbar.setDisplayShowTitleEnabled(false);

    actionbarView = getLayoutInflater().inflate(R.layout.custom_actionbar,null);
    ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT,ActionBar.LayoutParams.MATCH_PARENT);
    actionbar.setCustomView(actionbarView, layoutParams);

    Toolbar parent = (Toolbar) actionbarView.getParent();
    parent.setContentInsetsAbsolute(0, 0);
    parent.setBackgroundResource(R.drawable.top_nav);

    toolbar_title   = (TextView)actionbarView.findViewById(R.id.toolbar_title);

    // set click listener on toolbar_title.. and perform expand and collapse

    // need to check this condition for lollipop and greater version
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        getWindow().setStatusBarColor(getResources().getColor(R.color.statusBarDark));
    }
}

вот custom_actionbar.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/top_nav"
xmlns:android="http://schemas.android.com/apk/res/android">

<TextView
    android:id="@+id/toolbar_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:text="Profile"
    android:textColor="@android:color/white"
    android:textStyle="normal"
    android:textSize="24sp" />

person Angad Tiwari    schedule 29.09.2015