Wie kann ich eine benutzerdefinierte Symbolleiste für jedes Fragment festlegen, wenn ich eine ViewPager
verwende? Ich möchte verschiedene Symbole haben, wenn verschiedene Fragmente angezeigt werden. Ich möchte nicht Menu
verwenden.Android Swap/Edit Symbolleiste auf der Seite blättern in ViewPager
Ich verwende cheesesquare als Beispiel-App und die activity_main.xml sieht wie folgt aus:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:layout_scrollFlags="scroll|enterAlways|snap" />
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="end|bottom"
android:layout_margin="@dimen/fab_margin"
android:src="@drawable/ic_check_black_24dp"
android:tint="@color/white"/>
</android.support.design.widget.CoordinatorLayout>
Das entsprechende Bit in MainActivity.Java ist dies, wo die ViewPager up mit verschiedenen Fragmenten eingestellt:
Vielleicht kann ich irgendwie ein eindeutiges Symbolleistenlayout angeben (das würde ImageButtons haben, die zum Beispiel die Icons anzeigen) für jedes Fragment und setze jedes irgendwo in der Fragment-Java-Datei (zB auslagern wenn anderes Fragment angezeigt wird)?
EDIT: In meinen anderen Anwendungen, was ich tat, war eine Symbolleiste verwenden, aber dann verstecken/show ImageButtons, die die Symbole angezeigt werden sollen, basierend auf welchem Fragment wurde gezeigt.
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="right"
android:orientation="horizontal">
<TextView
android:id="@+id/toolbarTitleTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Title"
android:layout_gravity="center"
android:singleLine="true"
android:ellipsize="end"
android:textSize="20sp"
android:textColor="#fff"
android:fontFamily="sans-serif-medium"
/>
<View
android:id="@+id/clearView"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1" />
<ImageButton
android:id="@+id/editButton"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center_vertical"
android:layout_marginRight="16dp"
android:scaleType="fitCenter"
android:padding="8dp"
android:background=
"?attr/selectableItemBackgroundBorderless"
android:contentDescription="Post"
android:src="@drawable/ic_mode_edit_24dp"
android:tint="@color/white"
/>
</LinearLayout>
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
Wollen Sie die Änderung der tablayout Symbole, wenn Sie swpie? –
@VereeshCharantimath Nein, die ToolBar, die direkt darüber ist. Normalerweise würden Sie Menüsymbole wie die drei Punkte für Einstellungen sehen. – Micro
Sie möchten also die Symbolleiste bei jedem Wischen ändern? –