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

Android-Grundlagen: Verwendung der Symbolleiste

高洛峰
Freigeben: 2016-11-15 10:02:13
Original
1215 Leute haben es durchsucht

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
Nach dem Login kopieren

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>
Nach dem Login kopieren

Methode 2:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
Nach dem Login kopieren

Ä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>
Nach dem Login kopieren

Abbrechen direkt im Code.

So verwenden Sie
requestWindowFeature(Window.FEATURE_NO_TITLE); 
       setContentView(R.layout.activity_main); 
       //supportRequestWindowFeature(Window.FEATURE_NO_TITLE);  在AppCompatActivity中
Nach dem Login kopieren

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>
Nach dem Login kopieren

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中
Nach dem Login kopieren

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>
Nach dem Login kopieren

@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; 
    }
Nach dem Login kopieren

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); 
   }
Nach dem Login kopieren

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage