Android Lollipop, AppCompat ActionBar настраиваемое представление не занимает всю ширину экрана

? steve_the_kid @ | Original: StackOverFlow

Таким образом, я просто обновил свой кодовую в леденец, и у меня проблемы с панели действий . Я использую AppCompat и ActionBarActivity, и увеличивая настраиваемое представление . Кажется, чтообычай зрения уже не занимает всю ширину экрана, оставляя тонкую полоску слева

Android Lollipop, AppCompat ActionBar настраиваемое представление не занимает всю ширину экрана Путь он используется для просмотра

Android Lollipop, AppCompat ActionBar настраиваемое представление не занимает всю ширину экрана Как она выглядит сейчас

Этокод, я использую для настройки панели действий . Кто-нибудь есть какие-то идеи ?

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();
        }
    });
}

Edit

Достав пользовательский вид и изменение фона теперь занимает всю ширину. Таквопрос в том, как мы можем сделатьCustomView взять на себя всю ширину ActionBar ?



Top 5 Respuesta

1Muzikant @

Похоже, это связано с последними изменениями вActionBar в недавнем appcompat-v7 обновления. Похоже, что существуют значительные изменения в том, как вы должны обрабатывать баров действий.

Я столкнулся с той же проблемы, и после прочтения http://developer.android.com/reference/android/support/v7/app/ActionBar.html, и особенноследующая цитата, я нашел решение.

Начиная с Android L (уровень 21 API ) ,бар действие может быть представлен любой виджет панели инструментов в макет приложения . Приложение может сигнализировать деятельность, которая Toolbar следует рассматривать как панели действий деятельности в . Мероприятия, которые используют эту функцию следует использовать один из предустановленных тем .NoActionBar, установите атрибут windowActionBar ложь или в противном случае не просить функцию окна.

Я вижу это так, то ActionBar темы были изменены, и, с одной стороны, казалось, разорватьнекоторые вещи, но обеспечивают большую гибкость надруга. Я рекомендую следующие действия :

Use AppCompat style in your activity as described in the above quote Add a .NoActionBar to your Activity layout Set the android.support.v7.widget.Toolbar attribute. This is the main issue with the margin that you describe in your question
app:contentInsetStart="0dp"

Это обычно рекомендуется, что вы делаете, что в отдельном файле макета и использовать <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/actionBar" android:layout_width="match_parent" android:layout_height="wrap_content" app:contentInsetEnd="0dp" app:contentInsetStart="0dp" > </android.support.v7.widget.Toolbar> в макете деятельности так что вам потребуется только настроить панель инструментов в одном месте, если используется в нескольких мероприятиях

include
Use <include layout="@layout/view_action_bar" /> and findViewById in your Activity setSupportActionBar to onCreate
signal to the Activity which Toolbar should be treated as the Activity's action bar
Once you do that, all actions added in Toolbar actionBar = (Toolbar) findViewById(R.id.actionBar); setSupportActionBar(actionBar); will be added to the toolbar and it will be treated as the activity action bar. Further customize the Toolbar as desired (Add child views etc.)

2Gian Darren Azriel Aquino @

Я думаю, вы также можете сделать это в стиле. попробуйте это. испытал его на KitKat

onCreateOptionsMenu
3LeoLink @

Я просто столкнулся с этой проблемой и сегодня, то я узнал, что я был с <style name="AppTheme" parent="Theme.AppCompat"> <item name="toolbarStyle">@style/AppThemeToolbar</item> </style> <style name="AppThemeToolbar" parent="Widget.AppCompat.Toolbar" > <item name="contentInsetStart">0dp</item> </style> в моем проекте, который был сгенерирован автоматически Android Студия и этопричина.

Why?

Поскольку содержание моего res/values-v21/styles.xml По был :

res/values-v21/styles.xml

А мой <?xml version="1.0" encoding="utf-8"?> <resources> <style name="BaseAppTheme" parent="android:Theme.Material.Light"> </style> </resources> содержится что-то вроде :

res/values/styles.xml

Потом, когда я бежал мое приложение на леденец,<style name="BaseAppTheme" parent="android:Theme.Holo.Light"> <!-- Customize your theme here. --> <item name="android:windowContentOverlay">@null</item> <item name="android:soundEffectsEnabled">false</item> </style> был использован, и что вызвало точный проблема, что OP было. Так я пришел клегко исправить только удаление :

res/values-v21/styles.xml

in <style name="BaseAppTheme" parent="android:Theme.Material.Light"> </style>