Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Přehled
Jedním z nejběžnějších použití je Toolbar nahrazení výchozího panelu akcí vlastním Toolbar panelem akcí (když se vytvoří nový projekt Androidu, použije se výchozí panel akcí). Toolbar Vzhledem k tomu, že poskytuje možnost přidávat značková loga, názvy, položky nabídek, navigační tlačítka a dokonce i vlastní zobrazení do oddílu panelu aplikací uživatelského rozhraní aktivity, nabízí významný upgrade na výchozím panelu akcí.
Nahrazení výchozího panelu Toolbarakcí aplikace pomocí:
Vytvořte nový vlastní motiv a upravte vlastnosti aplikace tak, aby používal tento nový motiv.
windowActionBarZakažte atribut ve vlastním motivu a povoltewindowNoTitleatribut.Definujte rozložení pro .
ToolbarZahrňte
Toolbarrozložení do souboru rozložení Main.axml aktivity.Přidejte do metody aktivity
OnCreatekód, který vyhledáToolbara zavoláSetActionBar, aby se nainstaloval jakoToolBarpanel akcí.
Tento proces podrobně vysvětluje následující části. Vytvoří se jednoduchá aplikace a její panel akcí se nahradí přizpůsobeným Toolbar.
Spuštění projektu aplikace
Vytvořte nový projekt Androidu s názvem ToolbarFun (další informace o vytvoření nového projektu androidu najdete v tématu Hello, Android ). Po vytvoření tohoto projektu nastavte cílovou a minimální úroveň rozhraní Android API na Android 5.0 (api level 21 – Lollipop) nebo novější. Další informace o nastavení úrovní verzí Androidu najdete v tématu Principy úrovní rozhraní ANDROID API. Když je aplikace sestavená a spuštěná, zobrazí se výchozí panel akcí, jak je vidět na tomto snímku obrazovky:
Vytvoření vlastního motivu
Otevřete adresář Resources/values a vytvořte nový soubor s názvem styles.xml. Nahraďte jeho obsah následujícím kódem XML:
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<style name="MyTheme" parent="@android:style/Theme.Material.Light.DarkActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:colorPrimary">#5A8622</item>
</style>
</resources>
Tento KÓD XML definuje nový vlastní motiv s názvem MyTheme , který je založen na motivu Theme.Material.Light.DarkActionBar v Lollipop. Atribut windowNoTitle je nastavený na true skrytí záhlaví:
<item name="android:windowNoTitle">true</item>
Pokud chcete zobrazit vlastní panel nástrojů, musí být výchozí ActionBar nastavení zakázané:
<item name="android:windowActionBar">false</item>
Pro barvu pozadí panelu nástrojů se používá nastavení olivově zelené colorPrimary :
<item name="android:colorPrimary">#5A8622</item>
Použití vlastního motivu
Upravte vlastnosti/AndroidManifest.xml a přidejte do elementu <application> následující android:theme atribut, aby aplikace používala MyTheme vlastní motiv:
<application android:label="@string/app_name" android:theme="@style/MyTheme"></application>
Další informace o použití vlastního motivu v aplikaci najdete v tématu Použití vlastních motivů.
Definování rozložení panelu nástrojů
V adresáři Resources/layout vytvořte nový soubor s názvem toolbar.xml. Nahraďte jeho obsah následujícím kódem XML:
<?xml version="1.0" encoding="utf-8"?>
<Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/actionBarSize"
android:background="?android:attr/colorPrimary"
android:theme="@android:style/ThemeOverlay.Material.Dark.ActionBar"/>
Tento KÓD XML definuje vlastní Toolbar , který nahrazuje výchozí panel akcí. Minimální výška Toolbar je nastavená na velikost panelu akcí, který nahrazuje:
android:minHeight="?android:attr/actionBarSize"
Barva Toolbar pozadí je nastavena na olivově zelenou barvu definovanou dříve v styles.xml:
android:background="?android:attr/colorPrimary"
Počínaje lollipopem android:theme lze atribut použít ke stylu individuálního zobrazení. Motivy ThemeOverlay.Material představené v Lollipop umožňují překrýt výchozí Theme.Material motivy a přepsat relevantní atributy, aby byly buď světlé, nebo tmavé. V tomto příkladu Toolbar používá tmavý motiv, aby jeho obsah byl světlý v barvě:
android:theme="@android:style/ThemeOverlay.Material.Dark.ActionBar"
Toto nastavení se používá tak, aby položky nabídky kontrastovat s tmavší barvou pozadí.
Zahrnout rozložení panelu nástrojů
Upravte soubor rozložení Resources/layout/Main.axml a nahraďte jeho obsah následujícím kódem XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
</RelativeLayout>
Toto rozložení zahrnuje Toolbar definované v toolbar.xml a používá RelativeLayout k určení, že Toolbar se má umístit do horní části uživatelského rozhraní (nad tlačítkem).
Vyhledání a aktivace panelu nástrojů
Upravte MainActivity.cs a přidejte následující příkaz using:
using Android.Views;
Na konec OnCreate metody přidejte také následující řádky kódu:
var toolbar = FindViewById<Toolbar>(Resource.Id.toolbar);
SetActionBar(toolbar);
ActionBar.Title = "My Toolbar";
Tento kód najde Toolbar a zavolá SetActionBar tak, aby se chytly výchozí charakteristiky panelu Toolbar akcí. Název panelu nástrojů se změní na Můj panel nástrojů. Jak je vidět v tomto příkladu ToolBar kódu, můžete na panel akcí přímo odkazovat.
Zkompilujte a spusťte tuto aplikaci – vlastní Toolbar nastavení se zobrazí místo výchozího panelu akcí:
Všimněte si, že Toolbar styl se styluje nezávisle na motivu Theme.Material.Light.DarkActionBar použitém ve zbytku aplikace.
Pokud při spuštění aplikace dojde k výjimce, přečtěte si část Řešení potíží níže.
Přidat položky nabídky
V této části jsou nabídky přidány do .Toolbar Pravá horní oblast ToolBar je vyhrazena pro položky nabídky – každá položka nabídky (označovaná také jako položka akce) může provést akci v rámci aktuální aktivity nebo může provést akci jménem celé aplikace.
Přidání nabídek do :Toolbar
Do složek projektu aplikace přidejte ikony nabídek (pokud je to potřeba
mipmap-). Google poskytuje sadu ikon bezplatných nabídek na stránce Ikony materiálu.Definujte obsah položek nabídky přidáním nového souboru prostředku nabídky v části Prostředky/nabídka.
OnCreateOptionsMenuImplementujte metodu aktivity – tato metoda nafoukne položky nabídky.OnOptionsItemSelectedImplementujte metodu aktivity – tato metoda provede akci při klepnutí na položku nabídky.
Následující části ukazují tento proces podrobně přidáním položek nabídky Upravit a Uložit do přizpůsobeného Toolbarsouboru .
Instalovat ikony nabídek
Pokračujte ukázkovou ToolbarFun aplikací a přidejte do projektu aplikace ikony nabídek. Stáhněte si ikony panelu nástrojů, rozbalte a zkopírujte obsah extrahovaných mipmap- složek do projektů mipmap- složek v části ToolbarFun/Resources a vložte do projektu každý přidaný soubor ikon.
Definování prostředku nabídky
V části Prostředky vytvořte podadresář nové nabídky. V podadresáři nabídky vytvořte nový soubor prostředku nabídky s názvem top_menus.xml a nahraďte jeho obsah následujícím kódem XML:
<?xml version="1.0" encoding="utf-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_edit"
android:icon="@mipmap/ic_action_content_create"
android:showAsAction="ifRoom"
android:title="Edit" />
<item
android:id="@+id/menu_save"
android:icon="@mipmap/ic_action_content_save"
android:showAsAction="ifRoom"
android:title="Save" />
<item
android:id="@+id/menu_preferences"
android:showAsAction="never"
android:title="Preferences" />
</menu>
Tento KÓD XML vytvoří tři položky nabídky:
Položka nabídky Upravit, která používá
ic_action_content_create.pngikonu (tužku).Položka nabídky Uložit, která používá
ic_action_content_save.pngikonu (disketu).Položka nabídky Předvolby, která nemá ikonu.
Atributy showAsAction položek nabídky Upravit a Uložit jsou nastaveny na ifRoom – toto nastavení způsobí, že se tyto položky nabídky zobrazí v Toolbar případě, že je k dispozici dostatek místa pro zobrazení. Položka nabídky Předvolby se nastaví showAsAction na never – to způsobí , že se nabídka Předvolby zobrazí v nabídce přetečení (tři svislé tečky).
Implementace OnCreateOptionsMenu
Do MainActivity.cs přidejte následující metodu:
public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.top_menus, menu);
return base.OnCreateOptionsMenu(menu);
}
Android volá metodu OnCreateOptionsMenu , aby aplikace mohl zadat prostředek nabídky pro aktivitu. V této metodě se top_menus.xml prostředek nafoukne do předaného menu. Tento kód způsobí, že se nové položky nabídky Upravit, Uložit a Předvolby zobrazí v nabídce Toolbar.
Implementace OnOptionsItemSelected
Do MainActivity.cs přidejte následující metodu:
public override bool OnOptionsItemSelected(IMenuItem item)
{
Toast.MakeText(this, "Action selected: " + item.TitleFormatted,
ToastLength.Short).Show();
return base.OnOptionsItemSelected(item);
}
Když uživatel klepne na položku nabídky, Android zavolá metodu OnOptionsItemSelected a předá ji do vybrané položky nabídky. V tomto příkladu implementace zobrazí informační zpráva, která označuje, na kterou položku nabídky jste klepli.
Sestavte a spusťte ToolbarFun , abyste viděli nové položky nabídky na panelu nástrojů.
Teď Toolbar se zobrazí tři ikony nabídek, jak je vidět na tomto snímku obrazovky:
Když uživatel klepne na položku nabídky Upravit , zobrazí se informační zpráva označující, že OnOptionsItemSelected metoda byla volána:
Když uživatel klepne na nabídku přetečení, zobrazí se položka nabídky Předvolby . Méně časté akce by se obvykle měly umístit do nabídky přetečení – tento příklad používá nabídku přetečení pro Předvolby , protože se nepoužívá tak často jako Edit and Save:
Další informace o nabídkách Androidu najdete v tématu Vývojářské nabídky androidu .
Řešení problému
Následující tipy vám můžou pomoct při ladění problémů, ke kterým může dojít při nahrazení panelu akcí panelem nástrojů.
Aktivita už má panel akcí
Pokud aplikace není správně nakonfigurovaná tak, aby používala vlastní motiv, jak je vysvětleno v části Použití vlastního motivu, může při spuštění aplikace dojít k následující výjimce:

Kromě toho může být vytvořena chybová zpráva: Java.Lang.IllegalStateException: Tato aktivita již obsahuje panel akcí zadaný dekorem okna.
Chcete-li tuto chybu opravit, ověřte, zda android:theme je atribut vlastního motivu přidán ( <application> v části Properties/AndroidManifest.xml), jak je popsáno výše v části Použití vlastního motivu. Kromě toho může být tato chyba způsobena, pokud Toolbar není správně nakonfigurované rozložení nebo vlastní motiv.




