Comment faire de la Barre d'outils titre cliquable exactement comme sur ActionBar, sans le définir comme ActionBar?
Fond
Je tiens à montrer une ActionBar sur PreferenceActivity, comme il n'est pas disponible pour les pré-Nid d'appareils (même dans la bibliothèque de prise en charge).
Parce que cette classe n'est pas disponible dans la bibliothèque de prise en charge, je ne peux pas juste d'appeler "setSupportActionBar" . Aussi, je ne souhaite pas utiliser une bibliothèque (comme celui-ci) depuis toutes les bibliothèques que j'ai trouvé encore l'utilisation de Mon style, de sorte qu'ils n'ont pas mis à jour jusqu'à présent, avec cela à l'esprit.
Pour ce faire, je suis en train d'imiter le look&feel de le titre de l'ActionBar dans le nouveau Barre d'outils classe, qui a été présenté sur le soutien de la bibliothèque v7 .
Le problème
J'ai réussi à mettre un titre et un des boutons "up", mais je ne peux pas savoir comment les rendre cliquables comme une action normale de la barre, y compris l'effet de toucher.
Le code
Voici le code:
SettingsActivity.java
public class SettingsActivity extends PreferenceActivity
{
@Override
protected void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
addPreferencesFromResource(R.xml.pref_general);
final Toolbar toolbar=(Toolbar)findViewById(R.id.toolbar);
toolbar.setBackgroundColor(getResources().getColor(R.color.windowBackgroundColor));
toolbar.setTitle("Settings");
toolbar.setClickable(true);
toolbar.setLogo(getResIdFromAttribute(this,R.attr.homeAsUpIndicator));
}
public static int getResIdFromAttribute(final Activity activity,final int attr)
{
if(attr==0)
return 0;
final TypedValue typedvalueattr=new TypedValue();
activity.getTheme().resolveAttribute(attr,typedvalueattr,true);
return typedvalueattr.resourceId;
}
}
activity_settings.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.antonioleiva.materialeverywhere.SettingsActivity" >
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<View
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/abs__ab_solid_shadow_holo" />
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
</LinearLayout>
Ce que j'ai essayé
J'ai essayé toutes les cliquez sur les auditeurs types de la Barre d'outils de la classe, mais aucun ne l'a aidé.
La seule chose qui a presque fonctionné est d'utiliser des "setNavigationIcon" au lieu de "setLogo", mais que fait réellement le titre&icône clicakable, mais seulement l'icône montre son effet d'être cliqué (même si je clique sur le titre).
La question
Comment puis-je ajouter le look & feel de la Barre d'outils, pour avoir le titre & logo pour ressembler à l'ActionBar?
OriginalL'auteur android developer | 2014-10-21
Vous devez vous connecter pour publier un commentaire.
Juste rappelez-vous que la Barre d'outils est fondamentalement juste un ViewGroup de sorte que vous pouvez ajouter un TextView et écouter onClick événements comme ça.
Ajouter TextView de la Barre d'outils en XML:
Écouter pour les clics dans votre Activité:
Afin de vous question est sur la façon de rendre le texte plus comme l'Actionbar texte et de ne pas être cliquable?
Oui, de préférence en le rendant entièrement l'apparence et au comportement normal ActionBar. Si c'est impossible de faire le textView de l'onu-cliquable, au moins il le même effet que de cliquer sur comme sur les boutons "up".
Sur quel appareil est-il cliquable?
sur la mienne: SGS3 (I9300) avec la rom custom CM (Android 4.4.x) . Quand je clique sur le titre, les boutons "up" obtient également clique dessus (ou au moins a un effet d'être cliqué).
OriginalL'auteur MrEngineer13
J'ai eu le même problème et a trouvé une très moyen pratique pour elle (pour le titre cliquable), de le faire avec le
Toolbar
. Il n'a pas d'importance, si leToolbar
est utilisé commeActionBar
ou non, ça fonctionne pour les deux cas.Il suffit de régler l'écouteur de clics sur les
Toolbar
lui-même, ce sera le résultat completToolbar
le tir de l'écouteur de clics, si ce n'est un élément de menu ou l'icône de la maison est cliqué. Pour moi, c'est exactement ce que j'attends...Par exemple:
onOptionsItemSelected
, la maison cliquez sur et similaires NE feu leonClick
événement. Semble être une bonne solutionIl sera, mais que l'espace sera comblé par un textview avec
MATCH_PARENT
aussi bien... c'est très bien pour mon usecases...ok, sympa solution de contournement.
comment pouvez-vous ajouter le textview avec h match_parent? si j'ajoute un point de vue avec match_parent il couvrira le titre.
C'est une excellente solution. Il n'est pas nécessaire d'ajouter quoi que ce soit pour le xml pour la barre d'outils, c'est à dire pas besoin de
TextView
ouImageView
. Ce que j'ai fait a été de définir un logo avecgetSupportActionBar().setLogo(R.drawable.jclogo);
, le rendre cliquable:toolbar.setClickable(true);
, suivi par le code ci-dessus et il fonctionne parfaitement. Merci @prom85OriginalL'auteur prom85
Vous pouvez le faire assez facilement sans avoir à faire aucune solution de contournement. Vous avez juste besoin de faire défiler toutes les vues enfant de la
Toolbar
, et trouver unTextView
qui a obtenu le titre exact du texte.OriginalL'auteur user496854