ActionBar avec le soutien de la bibliothèque et des Fragments de superposition de contenu
J'ai ajouté le android-support-bibliothèque-v7-appcompat à mon projet d'appui à l'ActionBar à partir de l'API de niveau 7 ci-dessus.
Il fonctionne comme un charme sur android 4.0+ et également sur android 2.3 avec une Activité normale, qui a setContentView dans onCreate, mais lorsque l'activité est en cours de chargement d'un Fragment dans le onCreate de l'ActionBar obtient coïncidé avec le contenu de ma mise en page. À tous les autres scénarios, la ActionBar fonctionne bien.
Voici un code:
class AssetsActivity extends ActionBarActivity{
@Override
protected void onCreate(Bundle arg0)
{
super.onCreate(arg0);
OpenLocalFragment assets = OpenLocalFragment.newInstance(index);
assets.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction()
.add(android.R.id.content, assets).commit();
}
}
Le thème de cette activité est défini dans le manifeste:
@style/Thème.AppCompat
Un c'est le résultat sur android 2.3 (4.0+ le ActionBar montre bien)
Vous pouvez voir que le premier lisview élément est la superposition de l'ActionBar(Blanc rond icône et le titre de "Mon activité")
Il est possible que j'ai trouvé un bug dans la bibliothèque de prise en charge, il est sorti seulement pour 2 jours maintenant?
Merci à tous.
OriginalL'auteur Primoz990 | 2013-07-26
Vous devez vous connecter pour publier un commentaire.
Edit:
C'est maintenant officiellement fixé et publié dans la Bibliothèque de prise en charge v19.
Comme JJD a commenté ci-dessous, vous pouvez utiliser normalement android.R.id.contenu avec appcompat-v7 r.19.0.0 ou plus récent. Le bouton home fonctionne aussi.
Avec d'autres mots: La solution de contournement ci-dessous n'est plus nécessaire si vous utilisez la version 19.0.0 ou plus récent.
J'ai eu la réponse à code.google.com. j'ai fait un résumé de frederic réponse:
Pour pré ICS dispositifs que vous devez utiliser:
au lieu de
R. id.action_bar_activity_content est une nouvelle id utilisé dans la mise en page pour l'affichage du contenu de l'application, il semblerait qu'elle remplacer android.R.id.le contenu lorsque vous utilisez soutien v7 appcompat ActionBarActivity.
Vous pouvez utiliser ce code pour récupérer l'id correct de l'activité contenu :
Merci à frédéric
Veuillez noter que l'utilisation de appcompat-v7 r.19.0.0 introduit un nouveau bug affectant les appareils fonctionnant sous Android 2.3.x tel que discuté dans le numéro 59077.
En plus de Primoz990 réponse: Vous pouvez utiliser
android.R.id.content
si vous utilisez appcompat-v7 r.19.0.0 ou plus récent. Chris Banes correction d'un problème 59077 de sorte que le bouton home fonctionne sur Android 2.3 et versions plus récentes. Vous n'avez plus besoin de la solution de référencementR.id.action_bar_activity_content
.Je suis d'utilisation d'un support de version de bibliothèque 19.0.1, mais le fragment est encore la superposition. Essayé de voir si la solution de contournement serait de travailler, mais si j'utilise le remplacer() sur R. id.action_bar_activity_content pour Android 2.3, j'ai eu un "Pas de vue l'identité de la 0x7f050015 (mypackage:id/action_bar_activity_content)". Que puis-je essayer? Edit:j'ai simplement utilisé eightyhertz solution, l'ajout d'un vide LinearLayout et l'ajout de la vue
Vous pouvez essayer d'ajouter .addToBackStack(null) sur votre fragment de transactions. J'ai eu quelques problèmes si vous remplacez un fragment avec Un fragment B (addtobackstack), que de remplacer B avec C (pas de backstack) et ensuite appuyer sur le bouton back. C est pas suspendu, Un est montré chevauchement avec C.
OriginalL'auteur Primoz990
Une autre alternative si vous ne voulez pas modifier le code source de android-support-bibliothèque-v7-appcompat est d'ajouter un layout vide dans la mise en page fichier xml tels que:
et de faire le fragment d'appel d'ajouter à cette mise en page à la place:
OriginalL'auteur doubleristretto
Semble un peu tard pour participer, mais j'ai eu le même problème et je n'ai pas vu la réponse ici....
Vérifier votre styles.xml fichier, il pourrait être un attribut xml qui permet de superposer l'actionbar true ie
vrai
L'ensemble de l'entrée ressemble à quelque chose comme ceci
Si c'est le cas, alors il suffit de changer la valeur de "windowActionBarOverlay" pour de faux.
OriginalL'auteur JackJin
Ajouter un supplément de vide en-tête de liste avec la taille de l'actionbar. Devrait être une bonne solution.
OriginalL'auteur vork