Fixed the behavior of the viewpager in the player and (name) refactor

This commit is contained in:
CappielloAntonio 2021-12-22 16:22:01 +01:00
parent 2f5e81fdef
commit b60c5448b2
14 changed files with 82 additions and 38 deletions

View file

@ -102,7 +102,7 @@ public class DiscoverSongAdapter extends RecyclerView.Adapter<DiscoverSongAdapte
QueueRepository queueRepository = new QueueRepository(App.getInstance()); QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(opener); queueRepository.insertAllAndStartNew(opener);
activity.isBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition())); activity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition()));
SongRepository songRepository = new SongRepository(App.getInstance()); SongRepository songRepository = new SongRepository(App.getInstance());

View file

@ -97,7 +97,7 @@ public class SimilarTrackAdapter extends RecyclerView.Adapter<SimilarTrackAdapte
QueueRepository queueRepository = new QueueRepository(App.getInstance()); QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(opener); queueRepository.insertAllAndStartNew(opener);
mainActivity.isBottomSheetInPeek(true); mainActivity.setBottomSheetInPeek(true);
mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition())); mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition()));
SongRepository songRepository = new SongRepository(App.getInstance()); SongRepository songRepository = new SongRepository(App.getInstance());

View file

@ -124,7 +124,7 @@ public class SongHorizontalAdapter extends RecyclerView.Adapter<SongHorizontalAd
QueueRepository queueRepository = new QueueRepository(App.getInstance()); QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs); queueRepository.insertAllAndStartNew(songs);
mainActivity.isBottomSheetInPeek(true); mainActivity.setBottomSheetInPeek(true);
mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition())); mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition()));
MusicPlayerRemote.openQueue(songs, getBindingAdapterPosition(), true); MusicPlayerRemote.openQueue(songs, getBindingAdapterPosition(), true);

View file

@ -96,7 +96,7 @@ public class TrackAdapter extends RecyclerView.Adapter<TrackAdapter.ViewHolder>
QueueRepository queueRepository = new QueueRepository(App.getInstance()); QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs); queueRepository.insertAllAndStartNew(songs);
mainActivity.isBottomSheetInPeek(true); mainActivity.setBottomSheetInPeek(true);
mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition())); mainActivity.setBottomSheetMusicInfo(songs.get(getBindingAdapterPosition()));
MusicPlayerRemote.openQueue(songs, getBindingAdapterPosition(), true); MusicPlayerRemote.openQueue(songs, getBindingAdapterPosition(), true);

View file

@ -12,6 +12,7 @@ import androidx.lifecycle.ViewModelProvider;
import androidx.navigation.NavController; import androidx.navigation.NavController;
import androidx.navigation.fragment.NavHostFragment; import androidx.navigation.fragment.NavHostFragment;
import androidx.navigation.ui.NavigationUI; import androidx.navigation.ui.NavigationUI;
import androidx.viewpager2.widget.ViewPager2;
import com.cappielloantonio.play.App; import com.cappielloantonio.play.App;
import com.cappielloantonio.play.R; import com.cappielloantonio.play.R;
@ -97,10 +98,10 @@ public class MainActivity extends BaseActivity {
/* /*
* All'apertura mostro il bottom sheet solo se in coda c'è qualcosa * All'apertura mostro il bottom sheet solo se in coda c'è qualcosa
*/ */
isBottomSheetInPeek(mainViewModel.isQueueLoaded()); setBottomSheetInPeek(mainViewModel.isQueueLoaded());
} }
public void isBottomSheetInPeek(Boolean isVisible) { public void setBottomSheetInPeek(Boolean isVisible) {
if (isVisible) { if (isVisible) {
bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
} else { } else {
@ -108,6 +109,10 @@ public class MainActivity extends BaseActivity {
} }
} }
public void setBottomSheetDraggableState(Boolean isDraggable) {
bottomSheetBehavior.setDraggable(isDraggable);
}
private void initNavigation() { private void initNavigation() {
bottomNavigationView = findViewById(R.id.bottom_navigation); bottomNavigationView = findViewById(R.id.bottom_navigation);
navHostFragment = (NavHostFragment) fragmentManager.findFragmentById(R.id.nav_host_fragment); navHostFragment = (NavHostFragment) fragmentManager.findFragmentById(R.id.nav_host_fragment);
@ -150,20 +155,26 @@ public class MainActivity extends BaseActivity {
new BottomSheetBehavior.BottomSheetCallback() { new BottomSheetBehavior.BottomSheetCallback() {
@Override @Override
public void onStateChanged(@NonNull View view, int state) { public void onStateChanged(@NonNull View view, int state) {
PlayerBottomSheetFragment playerBottomSheetFragment = (PlayerBottomSheetFragment) getSupportFragmentManager().findFragmentByTag("PlayerBottomSheet");
switch (state) { switch (state) {
case BottomSheetBehavior.STATE_HIDDEN: case BottomSheetBehavior.STATE_HIDDEN:
MusicPlayerRemote.quitPlaying(); MusicPlayerRemote.quitPlaying();
break; break;
case BottomSheetBehavior.STATE_COLLAPSED: case BottomSheetBehavior.STATE_COLLAPSED:
if (playerBottomSheetFragment != null) {
playerBottomSheetFragment.goBackToFirstPage();
}
case BottomSheetBehavior.STATE_SETTLING: case BottomSheetBehavior.STATE_SETTLING:
PlayerBottomSheetFragment playerBottomSheetFragment = (PlayerBottomSheetFragment) getSupportFragmentManager().findFragmentByTag("PlayerBottomSheet");
if (playerBottomSheetFragment != null) { if (playerBottomSheetFragment != null) {
playerBottomSheetFragment.scrollOnTop(); playerBottomSheetFragment.scrollOnTop();
// playerBottomSheetFragment.setPlayerCommandViewVisibility(false);
} }
break; break;
case BottomSheetBehavior.STATE_DRAGGING:
case BottomSheetBehavior.STATE_EXPANDED: case BottomSheetBehavior.STATE_EXPANDED:
if (playerBottomSheetFragment != null) {
setBottomSheetDraggableState(playerBottomSheetFragment.isViewPagerInFirstPage());
}
case BottomSheetBehavior.STATE_DRAGGING:
case BottomSheetBehavior.STATE_HALF_EXPANDED: case BottomSheetBehavior.STATE_HALF_EXPANDED:
break; break;
} }
@ -219,7 +230,7 @@ public class MainActivity extends BaseActivity {
} }
public void goFromLogin() { public void goFromLogin() {
isBottomSheetInPeek(mainViewModel.isQueueLoaded()); setBottomSheetInPeek(mainViewModel.isQueueLoaded());
goToHome(); goToHome();
} }

View file

@ -138,7 +138,7 @@ public class AlbumPageFragment extends Fragment {
QueueRepository queueRepository = new QueueRepository(App.getInstance()); QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs); queueRepository.insertAllAndStartNew(songs);
activity.isBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(0)); activity.setBottomSheetMusicInfo(songs.get(0));
MusicPlayerRemote.openQueue(songs, 0, true); MusicPlayerRemote.openQueue(songs, 0, true);
@ -150,7 +150,7 @@ public class AlbumPageFragment extends Fragment {
QueueRepository queueRepository = new QueueRepository(App.getInstance()); QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs); queueRepository.insertAllAndStartNew(songs);
activity.isBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(0)); activity.setBottomSheetMusicInfo(songs.get(0));
MusicPlayerRemote.openQueue(songs, 0, true); MusicPlayerRemote.openQueue(songs, 0, true);

View file

@ -149,7 +149,7 @@ public class ArtistPageFragment extends Fragment {
queueRepository.insertAllAndStartNew(songs); queueRepository.insertAllAndStartNew(songs);
MusicPlayerRemote.openQueue(songs, 0, true); MusicPlayerRemote.openQueue(songs, 0, true);
activity.isBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
} else { } else {
Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_tracks), Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_tracks), Toast.LENGTH_SHORT).show();
} }
@ -170,7 +170,7 @@ public class ArtistPageFragment extends Fragment {
QueueRepository queueRepository = new QueueRepository(App.getInstance()); QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew((ArrayList<Song>) media); queueRepository.insertAllAndStartNew((ArrayList<Song>) media);
activity.isBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo((Song) media.get(0)); activity.setBottomSheetMusicInfo((Song) media.get(0));
MusicPlayerRemote.openQueue((List<Song>) media, 0, true); MusicPlayerRemote.openQueue((List<Song>) media, 0, true);

View file

@ -126,6 +126,19 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
private void initCoverLyricsSlideView() { private void initCoverLyricsSlideView() {
bodyBind.playerSongCoverViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL); bodyBind.playerSongCoverViewPager.setOrientation(ViewPager2.ORIENTATION_HORIZONTAL);
bodyBind.playerSongCoverViewPager.setAdapter(new PlayerNowPlayingSongAdapter(this)); bodyBind.playerSongCoverViewPager.setAdapter(new PlayerNowPlayingSongAdapter(this));
bodyBind.playerSongCoverViewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
if (position == 0) {
activity.setBottomSheetDraggableState(true);
} else if (position == 1) {
activity.setBottomSheetDraggableState(false);
}
}
});
} }
private void initQueueRecyclerView() { private void initQueueRecyclerView() {
@ -213,7 +226,13 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
} }
private void initMusicCommandUnfoldButton() { private void initMusicCommandUnfoldButton() {
bodyBind.playerCommandUnfoldButton.setOnClickListener(view -> setPlayerCommandViewVisibility(bodyBind.playerCommandCardview.getVisibility() == View.INVISIBLE || bodyBind.playerCommandCardview.getVisibility() == View.GONE)); bodyBind.playerCommandUnfoldButton.setOnClickListener(view -> {
if (bodyBind.playerCommandCardview.getVisibility() == View.INVISIBLE || bodyBind.playerCommandCardview.getVisibility() == View.GONE) {
bodyBind.playerCommandCardview.setVisibility(View.VISIBLE);
} else {
bodyBind.playerCommandCardview.setVisibility(View.GONE);
}
});
} }
private void initMusicCommandButton() { private void initMusicCommandButton() {
@ -290,14 +309,6 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
bodyBind.buttonFavorite.setChecked(song.isFavorite()); bodyBind.buttonFavorite.setChecked(song.isFavorite());
} }
public void setPlayerCommandViewVisibility(boolean isVisible) {
if (isVisible) {
bodyBind.playerCommandCardview.setVisibility(View.VISIBLE);
} else {
bodyBind.playerCommandCardview.setVisibility(View.GONE);
}
}
protected void updatePlayPauseState() { protected void updatePlayPauseState() {
headerBind.playerHeaderButton.setChecked(!MusicPlayerRemote.isPlaying()); headerBind.playerHeaderButton.setChecked(!MusicPlayerRemote.isPlaying());
bodyBind.playerBigPlayPauseButton.setChecked(!MusicPlayerRemote.isPlaying()); bodyBind.playerBigPlayPauseButton.setChecked(!MusicPlayerRemote.isPlaying());
@ -315,6 +326,14 @@ public class PlayerBottomSheetFragment extends Fragment implements MusicServiceE
bind.playerNestedScrollView.fullScroll(ScrollView.FOCUS_UP); bind.playerNestedScrollView.fullScroll(ScrollView.FOCUS_UP);
} }
public void goBackToFirstPage() {
bodyBind.playerSongCoverViewPager.setCurrentItem(0);
}
public boolean isViewPagerInFirstPage() {
return bodyBind.playerSongCoverViewPager.getCurrentItem() == 0;
}
@Override @Override
public void onServiceConnected() { public void onServiceConnected() {
setSongInfo(Objects.requireNonNull(MusicPlayerRemote.getCurrentSong())); setSongInfo(Objects.requireNonNull(MusicPlayerRemote.getCurrentSong()));

View file

@ -143,7 +143,7 @@ public class PlaylistPageFragment extends Fragment {
QueueRepository queueRepository = new QueueRepository(App.getInstance()); QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs); queueRepository.insertAllAndStartNew(songs);
activity.isBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(0)); activity.setBottomSheetMusicInfo(songs.get(0));
MusicPlayerRemote.openQueue(songs, 0, true); MusicPlayerRemote.openQueue(songs, 0, true);
@ -155,7 +155,7 @@ public class PlaylistPageFragment extends Fragment {
QueueRepository queueRepository = new QueueRepository(App.getInstance()); QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs); queueRepository.insertAllAndStartNew(songs);
activity.isBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(0)); activity.setBottomSheetMusicInfo(songs.get(0));
MusicPlayerRemote.openQueue(songs, 0, true); MusicPlayerRemote.openQueue(songs, 0, true);

View file

@ -138,7 +138,7 @@ public class SongListPageFragment extends Fragment {
QueueRepository queueRepository = new QueueRepository(App.getInstance()); QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(songs); queueRepository.insertAllAndStartNew(songs);
activity.isBottomSheetInPeek(true); activity.setBottomSheetInPeek(true);
activity.setBottomSheetMusicInfo(songs.get(0)); activity.setBottomSheetMusicInfo(songs.get(0));
MusicPlayerRemote.openQueue(songs, 0, true); MusicPlayerRemote.openQueue(songs, 0, true);

View file

@ -94,7 +94,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
QueueRepository queueRepository = new QueueRepository(App.getInstance()); QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew((ArrayList<Song>) media); queueRepository.insertAllAndStartNew((ArrayList<Song>) media);
((MainActivity) requireActivity()).isBottomSheetInPeek(true); ((MainActivity) requireActivity()).setBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetMusicInfo((Song) media.get(0)); ((MainActivity) requireActivity()).setBottomSheetMusicInfo((Song) media.get(0));
MusicPlayerRemote.openQueue((List<Song>) media, 0, true); MusicPlayerRemote.openQueue((List<Song>) media, 0, true);
@ -117,7 +117,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
queueRepository.insertAllAndStartNew(songs); queueRepository.insertAllAndStartNew(songs);
MusicPlayerRemote.openQueue(songs, 0, true); MusicPlayerRemote.openQueue(songs, 0, true);
((MainActivity) requireActivity()).isBottomSheetInPeek(true); ((MainActivity) requireActivity()).setBottomSheetInPeek(true);
dismissBottomSheet(); dismissBottomSheet();
}); });
@ -126,7 +126,7 @@ public class AlbumBottomSheetDialog extends BottomSheetDialogFragment implements
TextView playNext = view.findViewById(R.id.play_next_text_view); TextView playNext = view.findViewById(R.id.play_next_text_view);
playNext.setOnClickListener(v -> albumBottomSheetViewModel.getAlbumTracks().observe(requireActivity(), songs -> { playNext.setOnClickListener(v -> albumBottomSheetViewModel.getAlbumTracks().observe(requireActivity(), songs -> {
MusicPlayerRemote.playNext(songs); MusicPlayerRemote.playNext(songs);
((MainActivity) requireActivity()).isBottomSheetInPeek(true); ((MainActivity) requireActivity()).setBottomSheetInPeek(true);
dismissBottomSheet(); dismissBottomSheet();
})); }));

View file

@ -88,7 +88,7 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement
QueueRepository queueRepository = new QueueRepository(App.getInstance()); QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew((ArrayList<Song>) media); queueRepository.insertAllAndStartNew((ArrayList<Song>) media);
((MainActivity) requireActivity()).isBottomSheetInPeek(true); ((MainActivity) requireActivity()).setBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetMusicInfo((Song) media.get(0)); ((MainActivity) requireActivity()).setBottomSheetMusicInfo((Song) media.get(0));
MusicPlayerRemote.openQueue((List<Song>) media, 0, true); MusicPlayerRemote.openQueue((List<Song>) media, 0, true);
@ -110,7 +110,7 @@ public class ArtistBottomSheetDialog extends BottomSheetDialogFragment implement
queueRepository.insertAllAndStartNew(songs); queueRepository.insertAllAndStartNew(songs);
MusicPlayerRemote.openQueue(songs, 0, true); MusicPlayerRemote.openQueue(songs, 0, true);
((MainActivity) requireActivity()).isBottomSheetInPeek(true); ((MainActivity) requireActivity()).setBottomSheetInPeek(true);
} else { } else {
Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_tracks), Toast.LENGTH_SHORT).show(); Toast.makeText(requireContext(), getString(R.string.artist_error_retrieving_tracks), Toast.LENGTH_SHORT).show();
} }

View file

@ -99,7 +99,7 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
QueueRepository queueRepository = new QueueRepository(App.getInstance()); QueueRepository queueRepository = new QueueRepository(App.getInstance());
queueRepository.insertAllAndStartNew(opener); queueRepository.insertAllAndStartNew(opener);
((MainActivity) requireActivity()).isBottomSheetInPeek(true); ((MainActivity) requireActivity()).setBottomSheetInPeek(true);
((MainActivity) requireActivity()).setBottomSheetMusicInfo(song); ((MainActivity) requireActivity()).setBottomSheetMusicInfo(song);
SongRepository songRepository = new SongRepository(App.getInstance()); SongRepository songRepository = new SongRepository(App.getInstance());
@ -121,14 +121,14 @@ public class SongBottomSheetDialog extends BottomSheetDialogFragment implements
TextView playNext = view.findViewById(R.id.play_next_text_view); TextView playNext = view.findViewById(R.id.play_next_text_view);
playNext.setOnClickListener(v -> { playNext.setOnClickListener(v -> {
MusicPlayerRemote.playNext(song); MusicPlayerRemote.playNext(song);
((MainActivity) requireActivity()).isBottomSheetInPeek(true); ((MainActivity) requireActivity()).setBottomSheetInPeek(true);
dismissBottomSheet(); dismissBottomSheet();
}); });
TextView addToQueue = view.findViewById(R.id.add_to_queue_text_view); TextView addToQueue = view.findViewById(R.id.add_to_queue_text_view);
addToQueue.setOnClickListener(v -> { addToQueue.setOnClickListener(v -> {
MusicPlayerRemote.enqueue(song); MusicPlayerRemote.enqueue(song);
((MainActivity) requireActivity()).isBottomSheetInPeek(true); ((MainActivity) requireActivity()).setBottomSheetInPeek(true);
dismissBottomSheet(); dismissBottomSheet();
}); });

View file

@ -187,6 +187,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:backgroundTint="@color/colorPrimary" android:backgroundTint="@color/colorPrimary"
app:cardElevation="0dp" app:cardElevation="0dp"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/player_music_command_sector"> app:layout_constraintTop_toBottomOf="@+id/player_music_command_sector">
@ -203,9 +204,9 @@
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:scaleType="fitCenter" android:scaleType="fitCenter"
app:layout_constraintBottom_toBottomOf="@+id/player_big_play_pause_button"
app:layout_constraintEnd_toStartOf="@+id/player_big_play_pause_button" app:layout_constraintEnd_toStartOf="@+id/player_big_play_pause_button"
app:layout_constraintTop_toTopOf="@+id/player_big_play_pause_button" app:layout_constraintTop_toTopOf="@+id/player_big_play_pause_button"
app:layout_constraintBottom_toBottomOf="@+id/player_big_play_pause_button"
app:srcCompat="@drawable/ic_skip_previous" /> app:srcCompat="@drawable/ic_skip_previous" />
<ToggleButton <ToggleButton
@ -230,17 +231,17 @@
android:layout_marginStart="24dp" android:layout_marginStart="24dp"
android:background="?attr/selectableItemBackgroundBorderless" android:background="?attr/selectableItemBackgroundBorderless"
android:scaleType="fitCenter" android:scaleType="fitCenter"
app:layout_constraintBottom_toBottomOf="@+id/player_big_play_pause_button"
app:layout_constraintStart_toEndOf="@+id/player_big_play_pause_button" app:layout_constraintStart_toEndOf="@+id/player_big_play_pause_button"
app:layout_constraintTop_toTopOf="@+id/player_big_play_pause_button" app:layout_constraintTop_toTopOf="@+id/player_big_play_pause_button"
app:layout_constraintBottom_toBottomOf="@+id/player_big_play_pause_button"
app:srcCompat="@drawable/ic_skip_next" /> app:srcCompat="@drawable/ic_skip_next" />
<View <View
android:id="@+id/player_divider_bottom" android:id="@+id/player_divider_bottom"
style="@style/Divider" style="@style/Divider"
android:layout_marginStart="18dp" android:layout_marginStart="18dp"
android:layout_marginEnd="18dp"
android:layout_marginTop="12dp" android:layout_marginTop="12dp"
android:layout_marginEnd="18dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/player_big_play_pause_button" /> app:layout_constraintTop_toBottomOf="@+id/player_big_play_pause_button" />
@ -253,8 +254,21 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:clipToPadding="false" android:clipToPadding="false"
android:paddingTop="12dp" android:paddingTop="12dp"
android:paddingBottom="18dp"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/player_command_cardview" /> app:layout_constraintTop_toBottomOf="@+id/player_command_cardview" />
<Button
android:id="@+id/textButton"
style="@style/Widget.MaterialComponents.Button.TextButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:text="Load more"
android:textAllCaps="false"
android:textColor="@color/subtitleTextColor"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/player_queue_recycler_view"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>