Итак, я только что обновил свою кодовую базу до Lollipop, и у меня проблемы с панелью действий. Я использую AppCompat и ActionBarActivity и создаю настраиваемое представление. Кажется, что пользовательский вид больше не занимает всю ширину экрана, оставляя тонкую полоску слева
Как это выглядело раньше
Как это выглядит сейчас
Это код, который я использую для настройки панели действий. У кого-нибудь есть идеи?
final ActionBar actionBar = getSupportActionBar();
if(actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setCustomView(R.layout.action_bar_content_search_custom_view);
actionBar.setBackgroundDrawable(null);
// actionBar.setStackedBackgroundDrawable(null);
TextView title = (TextView) actionBar.getCustomView().findViewById(R.id.action_bar_title);
title.setText(R.string.youtube);
ImageView back = (ImageView) actionBar.getCustomView().findViewById(R.id.action_bar_back);
back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
редактировать
Удаление пользовательского вида и изменение фона теперь занимает всю ширину. Итак, проблема в том, как мы можем заставить CustomView занимать всю ширину ActionBar?
android
android-actionbar
android-appcompat
android-5.0-lollipop
Стиви Кидекель
источник
источник
appcompat-v7
.ImageView
. Попробуйте отключить его для начала.Ответы:
Похоже, это вызвано последними изменениями
ActionBar
в последнемappcompat-v7
обновлении. Похоже, что есть значительные изменения в том, как вы должны обрабатывать панели действий.Я столкнулся с той же проблемой и, прочитав
ActionBar
документацию , и особенно следующую цитату, нашел решение.На мой взгляд,
AppCompat
темы были изменены, и, с одной стороны, казалось, что некоторые вещи ломаются, но с другой стороны, обеспечивается гораздо больше гибкости. Я рекомендую выполнить следующие действия:.NoActionBar
стиль в своей деятельности, как описано в приведенной выше цитатеandroid.support.v7.widget.Toolbar
в свой макет Activityapp:contentInsetStart="0dp"
атрибут. Это основная проблема с маржей, которую вы описываете в своем вопросе.Обычно рекомендуется делать это в отдельном файле макета и использовать
include
в макете занятия, поэтому вам нужно будет настроить панель инструментов только в одном месте, если она используется в нескольких действиях.findViewById
иsetSupportActionBar
в своей деятельности,onCreate
чтобыsignal to the Activity which Toolbar should be treated as the Activity's action bar
onCreateOptionsMenu
будут добавлены на панель инструментов и будут обрабатываться как панель действий активности.источник
Error inflating class fragment
xmlns:app="http://schemas.android.com/apk/res-auto"
setCustomView
. Просто создайте файл макета с виджетами, которые вы хотите включить в свою панель инструментов (например, добавьте дочерние представления в файл макета, описанный в разделе 3 ответа)Вместо того, чтобы делать так много работы, как упомянул Музикант и как этот ответ
Вам нужно добавить только последние две строки кода, чтобы решить вашу проблему.
Я надеюсь, что это может помочь вам и всем остальным.
Добавьте эти четыре строки в приведенный выше код, чтобы правый пробел также был удален из панели действий поддержки.
источник
Я думаю, вы также можете сделать это в стилях. попробуй это. протестировал это на kitkat
источник
Ни один из других ответов не помог мне, поэтому я взглянул на фактические стили AppCompat v7, найденные здесь .
Если вы посмотрите на стиль Base.Widget.AppCompat.ActionBar, он имеет:
Очевидно, нам просто нужно переопределить эти свойства в нашем собственном стиле панели действий:
Это отлично сработало для меня, надеюсь, это поможет и другим.
источник
После долгих ударов головой о монитор это сработало для меня.
GetCustomView (). GetParent () - вот что помогло
источник
Я только что столкнулся с этой проблемой сегодня, потом я узнал, что у меня
res/values-v21/styles.xml
внутри моего проекта, который был автоматически сгенерирован Android Studio, и это причина.Зачем?
Потому что мой
res/values-v21/styles.xml
контент был:А в моем
res/values/styles.xml
содержалось что-то вроде:Затем, когда я запустил свое приложение на Lollipop, он
res/values-v21/styles.xml
был использован, и это вызвало ту же проблему, что и у OP. Итак, я пришел к простому исправлению - просто удалил:в
res/values-v21/styles.xml
источник
к точке:
убедитесь, что импортируете правильную панель инструментов -
android.support.v7.widget.Toolbar;
источник
Напишите эти две строки вместе со своим кодом
источник