Android Lollipop, vue personnalisée AppCompat ActionBar ne prend pas toute la largeur de l'écran

? steve_the_kid @ | Original: StackOverFlow

Donc, je ai juste mis à jour ma base de code de Lollipop, et je vais avoir des problèmes avec la barre d'action . Je utilise AppCompat et ActionBarActivity, et de gonfler une vue personnalisée . Il semble que la vue personnalisée ne prend plus toute la largeur de l'écran, laissant une bande mince sur la gauche

Android Lollipop, vue personnalisée AppCompat ActionBar ne prend pas toute la largeur de l'écran Way qu'elle regardait

Android Lollipop, vue personnalisée AppCompat ActionBar ne prend pas toute la largeur de l'écran Façon dont elle regarde maintenant

Ce est le code que je utilise pour mettre en place la barre d'action . Quelqu'un a des idées ?

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

Prenant la vue personnalisée et changer l'arrière-plan prend maintenant toute la largeur . Donc la question est, comment pouvons-nous faire une CustomView prendre toute la largeur de la ActionBar ?



Top 5 Respuesta

1Muzikant @

On dirait que cela est causé par les dernières modifications à la « ____ » dans la récente «____» mise à jour . Il semble que qu'il ya des changements importants à la façon dont vous devez gérer les barres d'action .

Je ai fait face la même question et après avoir lu le http://developer.android.com/reference/android/support/v7/app/ActionBar.html, et surtout la citation suivante, je ai trouvé une solution .

Commençant par Android L ( niveau de l'API 21 ), la barre d'action peut être représentée par ne importe quel widget de la barre d'outils dans la disposition d'application . L'application peut signaler à l'activité qui barre d'outils devrait être traitée comme la barre d'action de l'activité . Activités qui utilisent cette fonction doivent utiliser l'un des thèmes fournis .NoActionBar, définissez l'attribut windowActionBar false ou autrement ne demandera pas la fonction de fenêtre.

La façon dont je le vois, les thèmes «____» ont été modifiées et d'une part semblait briser quelques choses, mais de fournir une plus grande flexibilité de l'autre . Je recommande ces étapes suivantes:

Use ActionBar style in your activity as described in the above quote Add a appcompat-v7 to your Activity layout Set the ActionBar attribute. This is the main issue with the margin that you describe in your question
AppCompat

Il est généralement recommandé que vous faites cela dans un fichier de mise en page distincte et utiliser .NoActionBar dans votre mise en page de l'activité de sorte que vous aurez seulement besoin de personnaliser la barre d'outils en un seul endroit si elle est utilisée à de multiples activités

android.support.v7.widget.Toolbar
Use app:contentInsetStart="0dp" and <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> in your Activity include to <include layout="@layout/view_action_bar" />
findViewById
Once you do that, all actions added in setSupportActionBar 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 @

Je pense que vous pouvez aussi le faire dans des styles . essayez ceci. testé sur kitkat

onCreate
3LeoLink @

Je ai juste rencontré ce problème aujourd'hui ainsi, puis je ai découvert que je avais signal to the Activity which Toolbar should be treated as the Activity's action bar à l'intérieur de mon projet qui a été générée automatiquement par Android studio et ce est la cause .

Why?

Parce que Toolbar actionBar = (Toolbar) findViewById(R.id.actionBar); setSupportActionBar(actionBar); s ' était mon contenu :

onCreateOptionsMenu

Et mon «____» contenue quelque chose comme :

<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>

Puis, quand je ai couru mon application sur Lollipop, le «____» a été utilisé, et qui a causé problème exact que la PO avait . Alors je suis venu à une solution simple est juste supprime :

res/values-v21/styles.xml

in res/values-v21/styles.xml