Аналогично вопросу здесь, но имеет некоторые ключевые отличия. Наиболее заметно, что принятый ответ действительно работал до тех пор, пока не будет выпущена последняя версия библиотеки поддержки.
Здесь пользовательский макет представления:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFDD0000">
</LinearLayout>
Теперь, когда вы пытаетесь установить только пользовательский вид:
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(R.layout.actionbar);
В итоге вы получите настраиваемый макет, который не заполняет всю ширину:
Чтобы сделать это более интересным, у меня есть аналогичная настройка в другом приложении:
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setCustomView(R.layout.actionbar);
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setHomeButtonEnabled(false);
Это работало, пока я не обновил библиотеки поддержки до версии v21. Как только я это сделал, я закончил с той же проблемой в приложениях, которые ранее не имели этой проблемы.
Итак, мой вопрос в том, есть ли способ, чтобы пользовательский экран действия отображал ширину с помощью последней библиотеки поддержки?
Изменить. После выполнения еще нескольких тестов я обнаружил, что компиляция с targetSdkVersion/compileSdkVersion установлена в 19 и имеет v7: 19.0.1 (или v7: 19.1.0), для библиотеки нет эта проблема (есть домашняя иконка, о которой заботится более поздний код), подтверждая, что это определенно проблема с последней версией.