Heim >Java >javaLernprogramm >Android-Grundlagen: Verwendung der Symbolleiste

Android-Grundlagen: Verwendung der Symbolleiste

高洛峰
高洛峰Original
2016-11-15 10:02:131253Durchsuche

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

Android-Grundlagen: Verwendung der Symbolleiste

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>

Methode 2:
<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 Sie
requestWindowFeature(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>

Android-Grundlagen: Verwendung der SymbolleisteDiese Werte können auch dynamisch im Java-Code festgelegt werden.

Menü hinzufügen
mToolbar.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; 
    }

Android-Grundlagen: Verwendung der SymbolleisteSymbol 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); 
   }

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn