Die Toolbar wurde in Android 5.0 eingeführt und ersetzt das ActionBar-Steuerelement. Sie kann in hohem Maße angepasst und flexibel verwendet werden. Die offizielle ToolBar muss in Systemen über 5.0 verwendet werden. Sie müssen es im Support-v7-Paket verwenden.
Als nächstes folgt die Einführung der Symbolleiste auf der offiziellen Website:
Toolbar extends ViewGroup java.lang.Object ↳ android.view.View ↳ android.view.ViewGroup ↳ android.support.v7.widget.Toolbar
Voraussetzungen für die Verwendung
Zur Verwendung der Symbolleiste , müssen Sie die ActionBar der Aktivität ausblenden. Es gibt drei Methoden. Im Folgenden wird die erste Methode vorgestellt:
Ändern
auch in der Datei res/values/styles.xml Sie können das Thema direkt ohne ActionBar verwenden<style name="AppTheme.Base" parent="Theme.AppCompat"> <item name="windowActionBar">false</item> <item name="android:windowNoTitle">true</item> </style>
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
Ändern Sie das Thema der Aktivität in der Manifestdatei , wie unten gezeigt:
Methode 3:<activity android:name="MainActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> </activity>
Abbrechen direkt im Code.
So verwenden SierequestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); //supportRequestWindowFeature(Window.FEATURE_NO_TITLE); 在AppCompatActivity中
Fügen Sie in der Layoutdatei den folgenden Code hinzu. Die Position ist nicht festgelegt.
title wird zum Festlegen des Untertitels verwendet. titleTextColor wird zum Festlegen der Titelschriftfarbe verwendet. Der Effekt ist wie folgt:<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?android:attr/actionBarSize" android:background="?attr/colorPrimaryDark" app:title="Title" app:titleTextColor="#222222" app:logo="@mipmap/ic_launcher" app:subtitle="subtitle"></android.support.v7.widget.Toolbar>
Diese Werte können auch dynamisch im Java-Code festgelegt werden.
Menü hinzufügenmToolbar.setTitle("JavaTitle"); mToolbar.setSubtitle("JavaSubTitle"); mToolbar.setLogo(R.mipmap.ic_launcher); mToolbar.setNavigationIcon(android.R.drawable.ic_input_delete); mToolbar.setOverflowIcon(ContextCompat.getDrawable(this, android.R.drawable.ic_menu_more)); / setActionBar(mToolbar); //activity中 setSupportActionBar(mToolbar); //AppCompatActivity中
Um ein Menü hinzuzufügen, müssen wir zunächst die Datei main.xml in res/menu/ erstellen. Der Code lautet wie folgt
Das Folgende ist der Code in der Java-Datei.<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/add" android:icon="@android:drawable/ic_menu_add" android:title="Add" app:showAsAction="never|withText"/> <item android:id="@+id/delete" android:icon="@android:drawable/ic_menu_delete" android:title="Delete" app:showAsAction="never|withText"/> <item android:id="@+id/edit" android:icon="@android:drawable/ic_menu_edit" android:title="Edit" app:showAsAction="never|withText"/> <item android:id="@+id/email" android:icon="@android:drawable/sym_action_email" android:title="Email" app:showAsAction="never|withText"/> </menu>
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: Toast.makeText(MainActivity.this, "您点击了NavigationIcon", Toast.LENGTH_SHORT).show(); break; case R.id.add: Toast.makeText(MainActivity.this, "Add", Toast.LENGTH_SHORT).show(); break; case R.id.delete: Toast.makeText(MainActivity.this, "Delete", Toast.LENGTH_SHORT).show(); break; case R.id.edit: Toast.makeText(MainActivity.this, "Edit", Toast.LENGTH_SHORT).show(); break; case R.id.email: Toast.makeText(MainActivity.this, "Email", Toast.LENGTH_SHORT).show(); break; } return true; }
Symbol im Menü anzeigen
Nachdem wir dies geschrieben haben, werden wir feststellen, dass das ausgeblendete Menü das Symbol nicht anzeigt. Dann gehen wir vor Um es einzurichten:
Sie müssen nur die Methode wiederholen: Die Aktivität hier ist AppCompatActivity
Der Effekt ist wie folgt:@Override protected boolean onPrepareOptionsPanel(View view, Menu menu) { if (menu != null) { if (menu.getClass() == MenuBuilder.class) { try { Method m = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE); m.setAccessible(true); m.invoke(menu, true); } catch (Exception e) { Log.i("tag", "onPrepareOptionsPanel: " + getClass().getSimpleName() + "onMenuOpened...unable to set icons for overflow menu" + e); } } } return super.onPrepareOptionsPanel(view, menu); }