Donc, je viens de mettre à jour ma base de code vers Lollipop et j'ai des problèmes avec la barre d'action. J'utilise AppCompat et ActionBarActivity et je gonfle une vue personnalisée. Il semble que la vue personnalisée n'occupe plus toute la largeur de l'écran, laissant une fine bande sur la gauche
À quoi il ressemblait
À quoi ça ressemble maintenant
C'est le code que j'utilise pour configurer 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();
}
});
}
Éditer
La suppression de la vue personnalisée et la modification de l'arrière-plan occupent désormais toute la largeur. Le problème est donc de savoir comment faire en sorte qu'un CustomView occupe toute la largeur de l'ActionBar?
android
android-actionbar
android-appcompat
android-5.0-lollipop
Stevie Kideckel
la source
la source
appcompat-v7
.ImageView
. Essayez de le désactiver pour commencer.Réponses:
Il semble que cela soit dû aux dernières modifications apportées à la mise à jour
ActionBar
récenteappcompat-v7
. Il semble qu'il y ait des changements importants dans la façon dont vous devez gérer les barres d'action.J'ai rencontré le même problème et après avoir lu la
ActionBar
documentation , et surtout la citation suivante, j'ai trouvé une solution.À mon avis, les
AppCompat
thèmes ont été modifiés et d'une part semblaient casser certaines choses mais offrir beaucoup plus de souplesse d'autre part. Je recommande de suivre ces étapes:.NoActionBar
style dans votre activité comme décrit dans la citation ci-dessusandroid.support.v7.widget.Toolbar
à votre disposition d'activitéapp:contentInsetStart="0dp"
attribut. C'est le principal problème avec la marge que vous décrivez dans votre questionIl est généralement recommandé de le faire dans un fichier de mise en page séparé et de l'utiliser
include
dans la mise en page de votre activité afin que vous n'ayez besoin de personnaliser la barre d'outils qu'à un seul endroit si elle est utilisée dans plusieurs activités.findViewById
etsetSupportActionBar
dans votre activitéonCreate
poursignal to the Activity which Toolbar should be treated as the Activity's action bar
onCreateOptionsMenu
seront ajoutées à la barre d'outils et seront traitées comme la barre d'actions d'activité.la source
Error inflating class fragment
xmlns:app="http://schemas.android.com/apk/res-auto"
setCustomView
. Créez simplement un fichier de mise en page avec les widgets que vous souhaitez inclure dans votre barre d'outils (par exemple, ajoutez des vues enfants au fichier de mise en page décrit dans la section 3 de la réponse)Au lieu de faire autant de travail comme mentionné par Muzikant et comme cette réponse
Vous devez ajouter uniquement les deux dernières lignes de code pour résoudre votre problème.
J'espère que cela pourrait vous aider, vous et n'importe qui d'autre.
Ajoutez ces quatre lignes au code ci-dessus, de sorte que l'espace du côté droit soit également supprimé de la barre d'action de support.
la source
Je pense que vous pouvez aussi le faire dans les styles. essaye ça. testé sur kitkat
la source
Aucune des autres réponses n'a fonctionné pour moi, j'ai donc jeté un coup d'œil aux styles AppCompat v7 réels, trouvés ici .
Si vous regardez le style Base.Widget.AppCompat.ActionBar, il a:
Donc, évidemment, nous avons juste besoin de remplacer ces propriétés dans notre propre style de barre d'action:
Cela a très bien fonctionné pour moi, j'espère que cela aidera les autres aussi.
la source
Après m'être beaucoup cogné la tête contre le moniteur, cela a fonctionné pour moi
Le getCustomView (). GetParent () est ce qui a fait l'affaire
la source
Je viens de rencontrer ce problème aujourd'hui, puis j'ai découvert que j'avais à l'
res/values-v21/styles.xml
intérieur de mon projet qui était généré automatiquement par Android Studio et c'est la cause.Pourquoi?
Parce que
res/values-v21/styles.xml
le contenu de mon était:Et mon
res/values/styles.xml
contenu quelque chose comme:Ensuite, lorsque j'ai exécuté mon application sur Lollipop, le a
res/values-v21/styles.xml
été utilisé, et cela a causé exactement le problème qu'OP avait. Je suis donc arrivé à un correctif simple qui consiste simplement à supprimer:dans
res/values-v21/styles.xml
la source
jusqu'au point:
assurez-vous d'importer la bonne barre d'outils -
android.support.v7.widget.Toolbar;
la source
Écrivez ces deux lignes en plus avec votre code
la source