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


Я хотел бы центрировать заголовок в панели действий, имея значки действий рядом с ним(и игнорируя их для настройки гравитации).

Я хотел бы иметь это: Введите описание изображения здесь

Вместо этого у меня есть это: Введите описание изображения здесь

Вот мой код:

    ActionBar actionBar = getSupportActionBar();

    ActionBar.LayoutParams params = new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT);

    actionBar.setBackgroundDrawable(getResources().getDrawable(R.drawable.top_bar));
    actionBar.setCustomView(LayoutInflater.from(this).inflate(R.layout.actionbar_layout, null), params); 
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setDisplayShowHomeEnabled(false);
    actionBar.setDisplayShowTitleEnabled(false);

Мой макет:

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

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:padding="8dp"
        android:src="@drawable/launcher_icon" />

    <TextView
        android:id="@+id/actionbar_title"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:maxHeight="1dp"
        android:maxLines="1"
        android:paddingLeft="48dp"
        android:paddingRight="48dp"
        android:text="Bacon ipsum"
        android:textColor="#777777"
        android:textSize="20sp" />

</RelativeLayout>

Итак, моя проблема заключается в том, что центрирование заголовка работает только в том случае, если у меня есть 0 элементов actionbar рядом с ним, как только я добавляю элемент, центрирование облажается. Было бы также здорово, если бы я мог использовать up кнопка affordance с ней (которая также теперь завинчивает центровку).

Любая помощь будет признательна.

Я не хочу реализовывать свою собственную логику элемента/кнопки actionbar.

3 4

3 ответа:

Вы можете попробовать это в TextView:

<TextView
    android:id="@+id/actionbar_title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:maxHeight="1dp"
    android:maxLines="1"
    android:paddingLeft="48dp"
    android:paddingRight="48dp"
    android:text="Bacon ipsum"
    android:textColor="#777777"
    android:textSize="20sp" />
  1. Удалите значок запуска из вашего RelativeLayout.
  2. Измените ширину относительного вывода на wrap_content
  3. Удалить:

    Панель действий.setDisplayShowCustomEnabled(правда); панель действий.setDisplayShowHomeEnabled (false); панель действий.setDisplayShowTitleEnabled (false);

  4. Добавить:

    ActionBar.LayoutParams lp = new ActionBar.LayoutParams(
    
    ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, Gravity.CENTER);
    
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM)
    actionBar.setCustomView(yourInflatedCustomView, lp);
    

Вы пробовали внедрить в текст этот код?

android:layout_centerHorizontal="true"