Fix[side_dialog]: make the dialog scale properly with wrap_content

This commit is contained in:
artdeell 2024-11-21 17:29:49 +03:00
parent 924c33cb2c
commit b7fa7eb9eb
2 changed files with 40 additions and 50 deletions

View File

@ -4,7 +4,6 @@ import static net.kdt.pojavlaunch.Tools.currentDisplayMetrics;
import android.animation.ObjectAnimator; import android.animation.ObjectAnimator;
import android.content.Context; import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -14,19 +13,17 @@ import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.CallSuper; import androidx.annotation.CallSuper;
import androidx.annotation.IntegerRes;
import androidx.annotation.LayoutRes; import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.res.ResourcesCompat; import androidx.core.content.res.ResourcesCompat;
import net.kdt.pojavlaunch.R; import net.kdt.pojavlaunch.R;
public class SideDialogView<T extends View> { public class SideDialogView<T extends View> {
private final ConstraintLayout mDialogLayout; private final ViewGroup mDialogLayout;
private final DefocusableScrollView mScrollView; private final DefocusableScrollView mScrollView;
protected final T mDialogContent; protected final T mDialogContent;
private final int mMargin; private final int mMargin;
@ -39,7 +36,7 @@ public class SideDialogView<T extends View> {
public SideDialogView(Context context, ViewGroup parent, @LayoutRes int layoutId) { public SideDialogView(Context context, ViewGroup parent, @LayoutRes int layoutId) {
// Inflate layouts // Inflate layouts
mDialogLayout = (ConstraintLayout) LayoutInflater.from(context).inflate(R.layout.dialog_side_dialog, parent, false); mDialogLayout = (ViewGroup) LayoutInflater.from(context).inflate(R.layout.dialog_side_dialog, parent, false);
mScrollView = mDialogLayout.findViewById(R.id.side_dialog_scrollview); mScrollView = mDialogLayout.findViewById(R.id.side_dialog_scrollview);
mStartButton = mDialogLayout.findViewById(R.id.side_dialog_start_button); mStartButton = mDialogLayout.findViewById(R.id.side_dialog_start_button);
mEndButton = mDialogLayout.findViewById(R.id.side_dialog_end_button); mEndButton = mDialogLayout.findViewById(R.id.side_dialog_end_button);

View File

@ -1,30 +1,15 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- FIXME: If I use wrap content for the scrollview, it goes overboard --> <LinearLayout
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/_280sdp" android:layout_width="@dimen/_280sdp"
android:layout_marginVertical="@dimen/padding_heavy" android:layout_marginVertical="@dimen/padding_heavy"
android:orientation="vertical"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:background="@drawable/background_control_editor" android:background="@drawable/background_control_editor">
>
<com.kdt.DefocusableScrollView
android:id="@+id/side_dialog_scrollview"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/side_dialog_start_button"
app:layout_constraintTop_toBottomOf="@id/side_dialog_title_textview"
tools:background="@color/background_status_bar">
<!-- The content is inflated here -->
</com.kdt.DefocusableScrollView>
<TextView <TextView
android:id="@+id/side_dialog_title_textview" android:id="@+id/side_dialog_title_textview"
style="@style/TextAppearance.AppCompat.Large" style="@style/TextAppearance.AppCompat.Large"
@ -37,7 +22,6 @@
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:text="Quick settings" tools:text="Quick settings"
tools:visibility="visible" /> tools:visibility="visible" />
<View <View
android:id="@+id/side_dialog_title_divider" android:id="@+id/side_dialog_title_divider"
style="@style/ThickDivider" style="@style/ThickDivider"
@ -45,35 +29,44 @@
android:paddingHorizontal="@dimen/padding_moderate" android:paddingHorizontal="@dimen/padding_moderate"
android:visibility="gone" android:visibility="gone"
app:layout_constraintTop_toBottomOf="@id/side_dialog_title_textview"
tools:visibility="visible" tools:visibility="visible"
/> />
<com.kdt.DefocusableScrollView
android:id="@+id/side_dialog_scrollview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
tools:background="@color/background_status_bar">
<!-- The content is inflated here -->
</com.kdt.DefocusableScrollView>
<Button <RelativeLayout
android:id="@+id/side_dialog_start_button" android:layout_width="match_parent"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:visibility="visible" android:orientation="horizontal">
<Button
android:id="@+id/side_dialog_start_button"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:visibility="visible"
tools:visibility="visible"
tools:text="Cancel"
/>
app:layout_constraintStart_toStartOf="parent" <Button
app:layout_constraintBottom_toBottomOf="parent" android:id="@+id/side_dialog_end_button"
tools:visibility="visible" style="@style/Widget.AppCompat.Button.Borderless"
tools:text="Cancel" android:layout_width="wrap_content"
/> android:layout_height="wrap_content"
<Button android:layout_alignParentEnd="true"
android:id="@+id/side_dialog_end_button" android:visibility="visible"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible"
app:layout_constraintEnd_toEndOf="parent" tools:text="Confirm"
app:layout_constraintBottom_toBottomOf="parent" tools:visibility="visible"
tools:ignore="RelativeOverlap" />
tools:visibility="visible" <!-- Appears to be no way to properly fix this, and I'm not super fond of child ConstraintLayouts -->
tools:text="Confirm" </RelativeLayout>
/> </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>