Wie man die Symbolleiste Titel anklickbar, genau wie bei der ActionBar, ohne es als ActionBar?
Hintergrund
Möchte ich zeigen, eine ActionBar auf PreferenceActivity, da es nicht für pre-Honeycomb-Geräte (auch in der Bibliothek unterstützt).
Weil so eine Klasse ist nicht verfügbar auf der support-Bibliothek, ich kann nicht einfach anrufen "setSupportActionBar" . Ich auch nicht verwenden wollen, eine Bibliothek (wie this one), da alle Bibliotheken, die ich gefunden habe, noch verwenden Holo-Stil, so dass Sie nicht aktualisiert, so weit, mit diesem im Verstand.
Um dies zu tun, ich bin versucht zu imitieren den look&feel der Titel der ActionBar in die neue Toolbar Klasse, präsentiert wurde auf support library v7 .
Das problem
Ich habe erfolgreich setzen einen Titel und eine Schaltfläche "auf", aber ich kann nicht herausfinden, wie machen Sie Sie anklickbar wie ein normaler action-bar, einschließlich der Wirkung von Berührung.
Den code
Hier der 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>
, Was ich versucht habe
Ich habe versucht, alle auf die Zuhörer Arten der Symbolleiste Klasse, aber keiner half.
Die einzige Sache, die fast funktioniert hat, ist die Verwendung von "setNavigationIcon" statt "setLogo", aber das macht eigentlich auch den Titel&Symbol wird clicakable, noch nur das icon zeigt seine Wirkung geklickt haben (auch wenn ich auf die überschrift klicken).
Die Frage
Wie kann ich das look & feel der Symbolleiste, um den Titel & logo von es zu schauen, wie die ActionBar?
- Ich endete mit dem verlassen des realen ActionBar, wo es ist (in der einzigen Aktivität, die ich habe) und Simulation der PreferenceScreen. Nun ist dies eigentlich nur ein weiteres Fragment, in denen ich neu das look and feel der standard PreferenceActivity Elemente.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur daran erinnern, dass die Toolbar ist im Grunde nur eine ViewGroup, so können Sie eine TextView zu und hören Sie auf onClick-Ereignisse wie, die.
TextView hinzufügen zu Symbolleiste in XML:
Hören für Klicks in Ihre Tätigkeit:
inflateMenu
Methode, bläst das Menü für SieIch hatte das gleiche problem und fand eine sehr bequeme Möglichkeit, die für Sie (für die anklickbaren Titel), dies mit der
Toolbar
. Es spielt keine Rolle, wenn dieToolbar
ist alsActionBar
oder nicht, es funktioniert für beide Fälle.Nur die Klick-listener auf die
Toolbar
sich, dadurch wird die kompletteToolbar
auslösen des Klick-listener auf, wenn ein Menüelement oder das home-Symbol geklickt wird. Für mich ist es genau das, was ich erwarte...Beispiel:
onOptionsItemSelected
, home klicken und ähnlichen NICHT Feuer deronClick
Veranstaltung. Scheint wie eine gute LösungMATCH_PARENT
als gut... es ist gut für meine usecases...TextView
oderImageView
. Was ich Tat, war, ein logo mitgetSupportActionBar().setLogo(R.drawable.jclogo);
, machen Sie anklickbar:toolbar.setClickable(true);
, gefolgt von dem code oben, und es funktioniert perfekt. Danke @prom85Können Sie es tatsächlich tun, ziemlich leicht, ohne irgendwelche workarounds. Sie müssen nur Durchlaufen und alle untergeordneten Ansichten der
Toolbar
und finden Sie einenTextView
dass die korrekten Titel-text.