diff options
| author | xbzk <xbzk@noreply.localhost> | 2025-06-05 18:58:43 +0000 |
|---|---|---|
| committer | crueter <crueter@noreply.localhost> | 2025-06-05 18:58:43 +0000 |
| commit | d2364ae1f7f6ea962d296148d85fe08549baed37 (patch) | |
| tree | a702cb8739d6d868e5133b90f675dfdf3eb7e296 | |
| parent | 4cc39b98d6b74b605def76ffdcc933c307b01edd (diff) | |
Built-in landscape searchbar & status bar fixes (#154)
android layout:
landscape: moves the searchbar to top bar's free space, increasing room for gamelist;
minor fixes:
landscape: avoid settings button getting beneath android navbar;
portrait: avoid top bar's getting beneath android status bar.
Co-authored-by: Allison Cunha <allisonbzk@gmail.com>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/154
Co-authored-by: xbzk <xbzk@noreply.localhost>
Co-committed-by: xbzk <xbzk@noreply.localhost>
| -rw-r--r-- | src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt | 7 | ||||
| -rw-r--r-- | src/android/app/src/main/res/layout-land/fragment_games.xml | 219 |
2 files changed, 226 insertions, 0 deletions
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt index c1d0f6297a..b0121ad132 100644 --- a/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt +++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt @@ -454,6 +454,7 @@ class GamesFragment : Fragment() { val leftInsets = barInsets.left + cutoutInsets.left val rightInsets = barInsets.right + cutoutInsets.right + val topInsets = barInsets.top + cutoutInsets.top val mlpSwipe = binding.swipeRefresh.layoutParams as ViewGroup.MarginLayoutParams if (view.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR) { mlpSwipe.leftMargin = leftInsets @@ -464,6 +465,12 @@ class GamesFragment : Fragment() { } binding.swipeRefresh.layoutParams = mlpSwipe + val mlpHeader = binding.header.layoutParams as ViewGroup.MarginLayoutParams + mlpHeader.leftMargin += leftInsets + mlpHeader.rightMargin += rightInsets + mlpHeader.topMargin += if (!isLandscape) topInsets else 0 + binding.header.layoutParams = mlpHeader + binding.noticeText.updatePadding(bottom = spacingNavigation) binding.header.updatePadding(top = cutoutInsets.top + resources.getDimensionPixelSize(R.dimen.spacing_large) + if (isLandscape) barInsets.top else 0) binding.gridGames.updatePadding( diff --git a/src/android/app/src/main/res/layout-land/fragment_games.xml b/src/android/app/src/main/res/layout-land/fragment_games.xml new file mode 100644 index 0000000000..68ccb86b57 --- /dev/null +++ b/src/android/app/src/main/res/layout-land/fragment_games.xml @@ -0,0 +1,219 @@ +<androidx.constraintlayout.widget.ConstraintLayout + + 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:background="?attr/colorSurface" + > + + <LinearLayout + android:id="@+id/header" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:layout_marginHorizontal="20dp" + app:layout_constraintTop_toTopOf="parent" + > + + <com.google.android.material.textview.MaterialTextView + android:id="@+id/title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/app_name" + android:textAppearance="@style/TextAppearance.Material3.HeadlineLarge" + android:textSize="27sp" + android:textStyle="bold" + /> + + <FrameLayout + android:id="@+id/frame_search" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginHorizontal="15dp" + android:layout_weight="1" + android:visibility="visible" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toBottomOf="@id/header" + > + + <com.google.android.material.card.MaterialCardView + android:id="@+id/search_background" + style="?attr/materialCardViewFilledStyle" + android:layout_width="match_parent" + android:layout_height="48dp" + app:cardCornerRadius="21dp" + > + + <LinearLayout + android:id="@+id/search_container" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_marginStart="18dp" + android:layout_marginEnd="42dp" + android:orientation="horizontal" + > + + <ImageView + android:layout_width="21dp" + android:layout_height="21dp" + android:layout_gravity="center_vertical" + android:layout_marginEnd="18dp" + android:src="@drawable/ic_search" + app:tint="?attr/colorOnSurfaceVariant" + /> + + <EditText + android:id="@+id/search_text" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@android:color/transparent" + android:hint="@string/home_search_games" + android:inputType="text" + android:maxLines="1" + android:imeOptions="flagNoFullscreen" + /> + + </LinearLayout> + + <ImageView + android:id="@+id/clear_button" + android:layout_width="18dp" + android:layout_height="18dp" + android:layout_gravity="center_vertical|end" + android:layout_marginEnd="18dp" + android:background="?attr/selectableItemBackground" + android:src="@drawable/ic_clear" + android:visibility="invisible" + app:tint="?attr/colorOnSurfaceVariant" + /> + + </com.google.android.material.card.MaterialCardView> + + </FrameLayout> + + <com.google.android.material.card.MaterialCardView + android:id="@+id/view_button" + style="?attr/materialCardViewFilledStyle" + android:layout_width="42dp" + android:layout_height="42dp" + app:cardCornerRadius="21dp" + > + + <ImageView + android:layout_width="18dp" + android:layout_height="18dp" + android:layout_gravity="center" + android:src="@drawable/ic_eye" + app:tint="?attr/colorOnSurfaceVariant" + /> + + </com.google.android.material.card.MaterialCardView> + + <Space + android:layout_width="15dp" + android:layout_height="wrap_content" + /> + + <com.google.android.material.card.MaterialCardView + android:id="@+id/filter_button" + style="?attr/materialCardViewFilledStyle" + android:layout_width="42dp" + android:layout_height="42dp" + app:cardCornerRadius="21dp" + > + + <ImageView + android:layout_width="18dp" + android:layout_height="18dp" + android:layout_gravity="center" + android:src="@drawable/ic_filter" + app:tint="?attr/colorOnSurfaceVariant" + /> + + </com.google.android.material.card.MaterialCardView> + + <Space + android:layout_width="15dp" + android:layout_height="wrap_content" + /> + + <com.google.android.material.card.MaterialCardView + android:id="@+id/settings_button" + style="?attr/materialCardViewFilledStyle" + android:layout_width="42dp" + android:layout_height="42dp" + app:cardCornerRadius="21dp" + > + + <ImageView + android:layout_width="18dp" + android:layout_height="18dp" + android:layout_gravity="center" + android:src="@drawable/ic_settings" + app:tint="?attr/colorOnSurfaceVariant" + /> + + </com.google.android.material.card.MaterialCardView> + + </LinearLayout> + + <androidx.swiperefreshlayout.widget.SwipeRefreshLayout + android:id="@+id/swipe_refresh" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_marginTop="8dp" + app:layout_constraintTop_toBottomOf="@id/header" + app:layout_constraintBottom_toBottomOf="parent" + > + + <RelativeLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + > + + <com.google.android.material.textview.MaterialTextView + android:id="@+id/notice_text" + style="@style/TextAppearance.Material3.BodyLarge" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center" + android:padding="@dimen/spacing_large" + android:text="@string/empty_gamelist" + android:visibility="gone" + /> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/grid_games" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:clipToPadding="false" + android:scrollbarStyle="outsideOverlay" + android:scrollbars="vertical" + android:fadeScrollbars="true" + android:paddingHorizontal="4dp" + android:paddingVertical="4dp" + /> + + + </RelativeLayout> + + </androidx.swiperefreshlayout.widget.SwipeRefreshLayout> + + <com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton + android:id="@+id/add_directory" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="16dp" + android:contentDescription="Select_game_folder" + android:text="@string/folder" + app:icon="@drawable/ic_cartridge_outline" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + android:textColor="?attr/colorOnPrimaryContainer" + app:backgroundTint="?attr/colorPrimaryContainer" + app:iconTint="?attr/colorOnPrimaryContainer" + /> + +</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file |
