Ensemble OnClick Écouteur sur l'Action de la Barre de Titre dans Android
Je suis en train de travailler sur l'application android, où je suis en utilisant ActionBar
donc là, on est de la navigation tiroir icône pour l'ouvrir et le titre de ActionBar
dans ActionBar
. Je veux mettre un écouteur de clics sur le titre de ActionBar
tels que d'entamer une nouvelle Activity
et définis, cliquez sur l'auditeur différents sur la navigation tiroir icône pour ouvrir le tiroir de navigation de menu.
J'ai obtenu un clic sur la navigation tiroir icône, mais quand je clique sur le titre de ActionBar
titre aussi alors il ouvert le tiroir de navigation de menu. Est-il possible de définir différents écouteur de clics sur le titre de ActionBar
.
Merci d'avance.
- Est-ce le même que vous cherchez? Comment puis-je détecter un clic sur l'ActionBar titre?
- ce n'est donc pas possible ?
InformationsquelleAutor N Sharma | 2014-07-19
Vous devez vous connecter pour publier un commentaire.
Essayez d'ajouter ce code dans la fonction onCreate (). Cela permettra de saisir les ressources de l'action de la barre de titre, et de lui affecter un id que vous pouvez utiliser pour ajouter un OnClickListener pour. Laissez-moi savoir comment ça se passe!
your.R.id.action_bar_title
au lieu degetIdentifier
si vous utilisezappcompat-v7
. Vous pouvez demander à la fois de l'IDs et d'utiliser celui qui existe.Vous pouvez utiliser une mise en page personnalisée pour le titre et affecter un auditeur: l'
actionbar_title.xml:
getActionBar().setTitle()
et vous avez besoin de mettre en œuvre des sous-titres handilng vous-même en tant que bien, mais sinon, c'est la bonne solution. Ce serait sympa si quelqu'un a publié un résumé d'uneActionBarTitles
que d'une baisse-dans le remplacement de vue personnalisée appui titre/sous-titre et la lecture du thème.Je pense que Sima réponse est le meilleur, mais voici un hacky version dans le cas où vous préférez que.
Ce on devrait être universelle en ce qu'elle fonctionne avec:
ActionBar
Theme.AppCompat
soutienActionBar
setActionBar
utilisation
<Toolbar android:id="@+id/action_bar"
ou de passer dans le gonflés
Toolbar
commeroot
setSupportActionBar
utilisation
<android.support.v7.widget.Toolbar android:id="@id/action_bar"
ou de passer dans le gonflés
Toolbar
commeroot
Toolbar
implémentations peuvent avoir besoin d'un peu d'ajustement,mais alors vous pouvez encapsuler cette dans cette classe personnalisée.
Si j'ai seulement testé avec le soutien:v22.
resourceName
allait changer dans les futures versions de la bibliothèque de prise en charge?R.id.action_bar_title
est une ressource publique, tandis que laandroid.R.id.action_bar_title
c'est la mise en miroir, ne l'est pas (c'est pourquoigetIdentifier
est utilisé). Vous devriez être plus préoccupés que la plate-forme Android change le nom de l'endroit où le moment de la compilation de la protection ne s'applique pas.Si vous utilisez la Barre d'outils avec le soutien v7:21.
Découvrez le code suivant:
Vous pouvez le faire facilement à l'aide de la Barre d'outils. Définir la barre d'outils de mise en page fichier xml comme indiqué ci-dessous:
Ensuite, vous pouvez définir l'auditeur dans une Activité à l'aide de ce code:
Si vous souhaitez utiliser les ActionBar et pas la Barre d'outils, utilisez la commande suivante:
Si vous connaissez le texte qui est dans votre Titre, et vous êtes raisonnablement sûr qu'aucune autre
TextView
sur l'écran d'actions que le titre, vous pouvez utiliser un appel récursif à la Vue de l'arbre de recherche pour le trouver.C'est une excellente solution, car il ne nécessite pas de réflexion interne à la connaissance de la façon de la Barre d'outils est construit, et vous donne un accès direct à la
TextView
.Les plus fiables en vue d'appeler cette sur est le décor de vue, mais n'hésitez pas à expérimenter ce qui fonctionne le mieux pour vos besoins, votre kilométrage peut varier.
Vous pouvez le faire facilement à l'aide de la Barre d'outils. Définir la barre d'outils de mise en page fichier xml comme indiqué ci-dessous:
Ensuite, vous pouvez définir l'auditeur dans une Activité à l'aide de ce code: