diff options
Diffstat (limited to 'app')
17 files changed, 169 insertions, 62 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index 8fa3c9712..a36924452 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -18,6 +18,7 @@ import android.widget.EditText; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.ActionBarDrawerToggle; +import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowCompat; import androidx.core.view.WindowInsetsCompat; @@ -114,6 +115,12 @@ public class MainActivity extends CastEnabledActivity { navDrawer = findViewById(R.id.navDrawerFragment); setNavDrawerSize(); + // Consume navigation bar insets - we apply them in setPlayerVisible() + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main_view), (v, insets) -> + new WindowInsetsCompat.Builder(insets) + .setInsets(WindowInsetsCompat.Type.navigationBars(), Insets.NONE) + .build()); + final FragmentManager fm = getSupportFragmentManager(); if (fm.findFragmentByTag(MAIN_FRAGMENT_TAG) == null) { if (!UserPreferences.DEFAULT_PAGE_REMEMBER.equals(UserPreferences.getDefaultPage())) { diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/DrawerPreferencesDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/DrawerPreferencesDialog.java index e8cfe81f0..8f174f207 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/DrawerPreferencesDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/DrawerPreferencesDialog.java @@ -1,7 +1,7 @@ package de.danoeh.antennapod.dialog; import android.content.Context; -import androidx.appcompat.app.AlertDialog; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; import de.danoeh.antennapod.R; import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.fragment.NavDrawerFragment; @@ -19,7 +19,7 @@ public class DrawerPreferencesDialog { checked[i] = true; } } - AlertDialog.Builder builder = new AlertDialog.Builder(context); + MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(context); builder.setTitle(R.string.drawer_preferences); builder.setMultiChoiceItems(navTitles, checked, (dialog, which, isChecked) -> { if (isChecked) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java index 6e5db0963..37cd40b0e 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/InboxFragment.java @@ -1,16 +1,21 @@ package de.danoeh.antennapod.fragment; -import android.content.DialogInterface; +import android.content.Context; +import android.content.SharedPreferences; import android.os.Bundle; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.widget.CheckBox; import android.widget.Toast; + import androidx.annotation.NonNull; + +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; -import de.danoeh.antennapod.core.dialog.ConfirmationDialog; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.model.feed.FeedItem; @@ -25,6 +30,8 @@ import java.util.List; public class InboxFragment extends EpisodesListFragment { public static final String TAG = "NewEpisodesFragment"; private static final String PREF_NAME = "PrefNewEpisodesFragment"; + private static final String PREF_DO_NOT_PROMPT_REMOVE_ALL_FROM_INBOX = "prefDoNotPromptRemovalAllFromInbox"; + private SharedPreferences prefs; @NonNull @Override @@ -32,6 +39,7 @@ public class InboxFragment extends EpisodesListFragment { final View root = super.onCreateView(inflater, container, savedInstanceState); toolbar.inflateMenu(R.menu.inbox); toolbar.setTitle(R.string.inbox_label); + prefs = getActivity().getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); updateToolbar(); emptyView.setIcon(R.drawable.ic_inbox); emptyView.setTitle(R.string.no_inbox_head_label); @@ -63,19 +71,11 @@ public class InboxFragment extends EpisodesListFragment { return true; } if (item.getItemId() == R.id.remove_all_inbox_item) { - ConfirmationDialog removeAllNewFlagsConfirmationDialog = new ConfirmationDialog(getActivity(), - R.string.remove_all_inbox_label, - R.string.remove_all_inbox_confirmation_msg) { - - @Override - public void onConfirmButtonPressed(DialogInterface dialog) { - dialog.dismiss(); - DBWriter.removeAllNewFlags(); - ((MainActivity) getActivity()).showSnackbarAbovePlayer( - R.string.removed_all_inbox_msg, Toast.LENGTH_SHORT); - } - }; - removeAllNewFlagsConfirmationDialog.createNewDialog().show(); + if (prefs.getBoolean(PREF_DO_NOT_PROMPT_REMOVE_ALL_FROM_INBOX, false)) { + removeAllFromInbox(); + } else { + showRemoveAllDialog(); + } return true; } return false; @@ -97,4 +97,27 @@ public class InboxFragment extends EpisodesListFragment { protected int loadTotalItemCount() { return DBReader.getTotalEpisodeCount(new FeedItemFilter(FeedItemFilter.NEW)); } + + private void removeAllFromInbox() { + DBWriter.removeAllNewFlags(); + ((MainActivity) getActivity()).showSnackbarAbovePlayer(R.string.removed_all_inbox_msg, Toast.LENGTH_SHORT); + } + + private void showRemoveAllDialog() { + MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getContext()); + builder.setTitle(R.string.remove_all_inbox_label); + builder.setMessage(R.string.remove_all_inbox_confirmation_msg); + + View view = View.inflate(getContext(), R.layout.checkbox_do_not_show_again, null); + CheckBox checkNeverAskAgain = view.findViewById(R.id.checkbox_do_not_show_again); + builder.setView(view); + + builder.setPositiveButton(R.string.confirm_label, (dialog, which) -> { + dialog.dismiss(); + removeAllFromInbox(); + prefs.edit().putBoolean(PREF_DO_NOT_PROMPT_REMOVE_ALL_FROM_INBOX, checkNeverAskAgain.isChecked()).apply(); + }); + builder.setNegativeButton(R.string.cancel_label, null); + builder.show(); + } } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/SearchFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/SearchFragment.java index 80d07681d..77fec7a8f 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/SearchFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/SearchFragment.java @@ -42,6 +42,7 @@ import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler; import de.danoeh.antennapod.view.EmptyViewHandler; import de.danoeh.antennapod.view.EpisodeItemListRecyclerView; +import de.danoeh.antennapod.view.LiftOnScrollListener; import de.danoeh.antennapod.view.viewholder.EpisodeItemViewHolder; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -139,6 +140,7 @@ public class SearchFragment extends Fragment { } }; recyclerView.setAdapter(adapter); + recyclerView.addOnScrollListener(new LiftOnScrollListener(layout.findViewById(R.id.appbar))); RecyclerView recyclerViewFeeds = layout.findViewById(R.id.recyclerViewFeeds); LinearLayoutManager layoutManagerFeeds = new LinearLayoutManager(getActivity()); diff --git a/app/src/main/java/de/danoeh/antennapod/ui/home/HomeFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/home/HomeFragment.java index f03c6a3fd..da3fd7b05 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/home/HomeFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/home/HomeFragment.java @@ -3,6 +3,8 @@ package de.danoeh.antennapod.ui.home; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; @@ -70,6 +72,14 @@ public class HomeFragment extends Fragment implements Toolbar.OnMenuItemClickLis refreshToolbarState(); populateSectionList(); updateWelcomeScreenVisibility(); + + viewBinding.swipeRefresh.setDistanceToTriggerSync(getResources().getInteger(R.integer.swipe_refresh_distance)); + viewBinding.swipeRefresh.setOnRefreshListener(() -> { + AutoUpdateManager.runImmediate(requireContext()); + new Handler(Looper.getMainLooper()).postDelayed(() -> viewBinding.swipeRefresh.setRefreshing(false), + getResources().getInteger(R.integer.swipe_to_refresh_duration_in_ms)); + }); + return viewBinding.getRoot(); } diff --git a/app/src/main/java/de/danoeh/antennapod/ui/home/HomeSectionsSettingsDialog.java b/app/src/main/java/de/danoeh/antennapod/ui/home/HomeSectionsSettingsDialog.java index aa8ef8de3..e651aea48 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/home/HomeSectionsSettingsDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/home/HomeSectionsSettingsDialog.java @@ -4,7 +4,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; import android.text.TextUtils; -import androidx.appcompat.app.AlertDialog; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; import de.danoeh.antennapod.R; import java.util.List; @@ -22,7 +22,7 @@ public class HomeSectionsSettingsDialog { } } - AlertDialog.Builder builder = new AlertDialog.Builder(context); + MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(context); builder.setTitle(R.string.configure_home); builder.setMultiChoiceItems(sectionLabels, checked, (dialog, which, isChecked) -> { if (isChecked) { diff --git a/app/src/main/java/de/danoeh/antennapod/ui/home/sections/DownloadsSection.java b/app/src/main/java/de/danoeh/antennapod/ui/home/sections/DownloadsSection.java index dc072921f..78c336335 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/home/sections/DownloadsSection.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/home/sections/DownloadsSection.java @@ -63,9 +63,13 @@ public class DownloadsSection extends HomeSection { SwipeActions swipeActions = new SwipeActions(this, CompletedDownloadsFragment.TAG); swipeActions.attachTo(viewBinding.recyclerView); swipeActions.setFilter(new FeedItemFilter(FeedItemFilter.DOWNLOADED)); + return view; + } + @Override + public void onStart() { + super.onStart(); loadItems(); - return view; } @Override diff --git a/app/src/main/java/de/danoeh/antennapod/ui/home/sections/EpisodesSurpriseSection.java b/app/src/main/java/de/danoeh/antennapod/ui/home/sections/EpisodesSurpriseSection.java index 680bb5ef4..8aaeb1412 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/home/sections/EpisodesSurpriseSection.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/home/sections/EpisodesSurpriseSection.java @@ -68,11 +68,16 @@ public class EpisodesSurpriseSection extends HomeSection { if (seed == 0) { seed = new Random().nextInt(); } - loadItems(); return view; } @Override + public void onStart() { + super.onStart(); + loadItems(); + } + + @Override protected void handleMoreClick() { ((MainActivity) requireActivity()).loadChildFragment(new AllEpisodesFragment()); } diff --git a/app/src/main/java/de/danoeh/antennapod/ui/home/sections/InboxSection.java b/app/src/main/java/de/danoeh/antennapod/ui/home/sections/InboxSection.java index 8138edd89..3e7b02fd3 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/home/sections/InboxSection.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/home/sections/InboxSection.java @@ -20,6 +20,7 @@ import de.danoeh.antennapod.core.menuhandler.MenuItemUtils; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.event.FeedItemEvent; +import de.danoeh.antennapod.event.FeedListUpdateEvent; import de.danoeh.antennapod.event.UnreadItemsUpdateEvent; import de.danoeh.antennapod.fragment.InboxFragment; import de.danoeh.antennapod.fragment.swipeactions.SwipeActions; @@ -65,9 +66,13 @@ public class InboxSection extends HomeSection { SwipeActions swipeActions = new SwipeActions(this, InboxFragment.TAG); swipeActions.attachTo(viewBinding.recyclerView); swipeActions.setFilter(new FeedItemFilter(FeedItemFilter.NEW)); + return view; + } + @Override + public void onStart() { + super.onStart(); loadItems(); - return view; } @Override @@ -85,6 +90,11 @@ public class InboxSection extends HomeSection { loadItems(); } + @Subscribe(threadMode = ThreadMode.MAIN) + public void onFeedListChanged(FeedListUpdateEvent event) { + loadItems(); + } + @Subscribe(sticky = true, threadMode = ThreadMode.MAIN) public void onEventMainThread(DownloadEvent event) { Log.d(TAG, "onEventMainThread() called with DownloadEvent"); diff --git a/app/src/main/java/de/danoeh/antennapod/ui/home/sections/QueueSection.java b/app/src/main/java/de/danoeh/antennapod/ui/home/sections/QueueSection.java index 57fc85192..e35068e58 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/home/sections/QueueSection.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/home/sections/QueueSection.java @@ -58,11 +58,16 @@ public class QueueSection extends HomeSection { viewBinding.recyclerView.setLayoutManager( new LinearLayoutManager(getContext(), RecyclerView.HORIZONTAL, false)); viewBinding.recyclerView.setAdapter(listAdapter); - loadItems(); return view; } @Override + public void onStart() { + super.onStart(); + loadItems(); + } + + @Override protected void handleMoreClick() { ((MainActivity) requireActivity()).loadChildFragment(new QueueFragment()); } diff --git a/app/src/main/java/de/danoeh/antennapod/ui/home/sections/SubscriptionsSection.java b/app/src/main/java/de/danoeh/antennapod/ui/home/sections/SubscriptionsSection.java index 81dddbff3..b10d20e7b 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/home/sections/SubscriptionsSection.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/home/sections/SubscriptionsSection.java @@ -44,11 +44,16 @@ public class SubscriptionsSection extends HomeSection { listAdapter = new HorizontalFeedListAdapter((MainActivity) getActivity()); listAdapter.setDummyViews(NUM_FEEDS); viewBinding.recyclerView.setAdapter(listAdapter); - loadItems(); return view; } @Override + public void onStart() { + super.onStart(); + loadItems(); + } + + @Override protected void handleMoreClick() { ((MainActivity) requireActivity()).loadChildFragment(new SubscriptionFragment()); } diff --git a/app/src/main/java/de/danoeh/antennapod/view/viewholder/HorizontalItemViewHolder.java b/app/src/main/java/de/danoeh/antennapod/view/viewholder/HorizontalItemViewHolder.java index 5293338b6..42b0cb57c 100644 --- a/app/src/main/java/de/danoeh/antennapod/view/viewholder/HorizontalItemViewHolder.java +++ b/app/src/main/java/de/danoeh/antennapod/view/viewholder/HorizontalItemViewHolder.java @@ -1,11 +1,11 @@ package de.danoeh.antennapod.view.viewholder; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; +import androidx.cardview.widget.CardView; import androidx.recyclerview.widget.RecyclerView; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; @@ -21,9 +21,10 @@ import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.model.feed.FeedMedia; import de.danoeh.antennapod.ui.common.CircularProgressBar; import de.danoeh.antennapod.ui.common.SquareImageView; +import de.danoeh.antennapod.ui.common.ThemeUtils; public class HorizontalItemViewHolder extends RecyclerView.ViewHolder { - public final View card; + public final CardView card; public final ImageView secondaryActionIcon; private final SquareImageView cover; private final TextView title; @@ -67,6 +68,12 @@ public class HorizontalItemViewHolder extends RecyclerView.ViewHolder { if (media == null) { circularProgressBar.setPercentage(0, item); } else { + if (PlaybackStatus.isCurrentlyPlaying(media)) { + card.setCardBackgroundColor(ThemeUtils.getColorFromAttr(activity, R.attr.card_background_playing)); + } else { + card.setCardBackgroundColor(ThemeUtils.getColorFromAttr(activity, R.attr.card_background)); + } + if (item.getMedia().getDuration() > 0) { progressBar.setProgress(100 * item.getMedia().getPosition() / item.getMedia().getDuration()); } diff --git a/app/src/main/res/layout/addfeed.xml b/app/src/main/res/layout/addfeed.xml index 0b6ede087..8082b9c8a 100644 --- a/app/src/main/res/layout/addfeed.xml +++ b/app/src/main/res/layout/addfeed.xml @@ -4,17 +4,25 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" - android:fitsSystemWindows="true" android:orientation="vertical"> - <com.google.android.material.appbar.MaterialToolbar - android:id="@+id/toolbar" + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" - android:minHeight="?attr/actionBarSize" - android:theme="?attr/actionBarTheme" - app:title="@string/add_feed_label" - app:navigationIcon="?homeAsUpIndicator" /> + android:fitsSystemWindows="true" + android:elevation="0dp"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="?attr/actionBarSize" + android:theme="?attr/actionBarTheme" + app:title="@string/add_feed_label" + app:navigationIcon="?homeAsUpIndicator" /> + + </com.google.android.material.appbar.AppBarLayout> <androidx.cardview.widget.CardView android:layout_width="match_parent" diff --git a/app/src/main/res/layout/fragment_itunes_search.xml b/app/src/main/res/layout/fragment_itunes_search.xml index d39d49c04..36026ae1e 100644 --- a/app/src/main/res/layout/fragment_itunes_search.xml +++ b/app/src/main/res/layout/fragment_itunes_search.xml @@ -4,25 +4,32 @@ xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" - android:layout_height="match_parent" - android:fitsSystemWindows="true"> + android:layout_height="match_parent"> - <com.google.android.material.appbar.MaterialToolbar - android:id="@+id/toolbar" + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" - android:minHeight="?attr/actionBarSize" - android:orientation="horizontal" - android:theme="?attr/actionBarTheme" - app:navigationIcon="?homeAsUpIndicator" - app:title="@string/discover" /> + android:fitsSystemWindows="true" + android:elevation="0dp"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="?attr/actionBarSize" + android:theme="?attr/actionBarTheme" + app:title="@string/discover" + app:navigationIcon="?homeAsUpIndicator" /> + + </com.google.android.material.appbar.AppBarLayout> <GridView android:id="@+id/gridView" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_below="@id/toolbar" + android:layout_below="@id/appbar" android:clipToPadding="false" android:columnWidth="400dp" android:gravity="center" diff --git a/app/src/main/res/layout/home_fragment.xml b/app/src/main/res/layout/home_fragment.xml index 0c5d872b3..fca9406a8 100644 --- a/app/src/main/res/layout/home_fragment.xml +++ b/app/src/main/res/layout/home_fragment.xml @@ -65,18 +65,25 @@ </LinearLayout> - <androidx.core.widget.NestedScrollView - android:id="@+id/homeScrollView" + <androidx.swiperefreshlayout.widget.SwipeRefreshLayout + android:id="@+id/swipeRefresh" android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_height="match_parent"> - <LinearLayout - android:id="@+id/homeContainer" + <androidx.core.widget.NestedScrollView + android:id="@+id/homeScrollView" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - android:paddingBottom="12dp" /> + android:layout_height="wrap_content"> + + <LinearLayout + android:id="@+id/homeContainer" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:paddingBottom="12dp" /> + + </androidx.core.widget.NestedScrollView> - </androidx.core.widget.NestedScrollView> + </androidx.swiperefreshlayout.widget.SwipeRefreshLayout> </LinearLayout> diff --git a/app/src/main/res/layout/horizontal_itemlist_item.xml b/app/src/main/res/layout/horizontal_itemlist_item.xml index 5b4787d11..b69a3f445 100644 --- a/app/src/main/res/layout/horizontal_itemlist_item.xml +++ b/app/src/main/res/layout/horizontal_itemlist_item.xml @@ -21,7 +21,6 @@ <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" - android:background="?attr/background_elevated" android:orientation="vertical"> <androidx.cardview.widget.CardView diff --git a/app/src/main/res/layout/search_fragment.xml b/app/src/main/res/layout/search_fragment.xml index 3fded8725..0d4ea6556 100644 --- a/app/src/main/res/layout/search_fragment.xml +++ b/app/src/main/res/layout/search_fragment.xml @@ -3,23 +3,31 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" - android:layout_height="match_parent" - android:fitsSystemWindows="true"> + android:layout_height="match_parent"> - <com.google.android.material.appbar.MaterialToolbar - android:id="@+id/toolbar" + <com.google.android.material.appbar.AppBarLayout + android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" - android:minHeight="?attr/actionBarSize" - android:theme="?attr/actionBarTheme" - app:navigationIcon="?homeAsUpIndicator" - app:title="@string/search_label" /> + android:fitsSystemWindows="true" + android:elevation="0dp"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="?attr/actionBarSize" + android:theme="?attr/actionBarTheme" + app:title="@string/search_label" + app:navigationIcon="?homeAsUpIndicator" /> + + </com.google.android.material.appbar.AppBarLayout> <com.google.android.material.chip.Chip android:id="@+id/feed_title_chip" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_below="@id/toolbar" + android:layout_below="@id/appbar" android:layout_marginLeft="10dp" android:layout_marginRight="0dp" android:visibility="gone" |