Adds a Stepper control and uses it for the steppers in the editor.

This commit is contained in:
2021-05-30 03:40:30 -07:00
parent 5a94408f7b
commit aa850ecfc6
8 changed files with 329 additions and 528 deletions

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="@dimen/text_margin"
tools:context=".ui.components.Stepper">
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="20 (+5)" />
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textAppearance="?attr/textAppearanceSubtitle1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Strength" />
<Button
android:id="@+id/decrement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_decrement_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/increment"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/increment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_increment_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</merge>

View File

@@ -11,259 +11,64 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
<com.majinnaibu.monstercards.ui.components.Stepper
android:id="@+id/strength"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin">
android:layout_margin="@dimen/text_margin"
app:label="@string/label_strength"
app:maxValue="99"
app:minValue="1"
app:stepAmount="1" />
<TextView
android:id="@+id/strength"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="20 ft." />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_strength"
android:textAppearance="?attr/textAppearanceSubtitle1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/strength_decrement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_decrement_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/strength_increment"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/strength_increment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_increment_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
<com.majinnaibu.monstercards.ui.components.Stepper
android:id="@+id/dexterity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin">
android:layout_margin="@dimen/text_margin"
app:label="@string/label_dexterity"
app:maxValue="99"
app:minValue="1"
app:stepAmount="1" />
<TextView
android:id="@+id/dexterity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="20 ft." />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_dexterity"
android:textAppearance="?attr/textAppearanceSubtitle1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/dexterity_decrement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_decrement_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/dexterity_increment"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/dexterity_increment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_increment_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
<com.majinnaibu.monstercards.ui.components.Stepper
android:id="@+id/constitution"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin">
android:layout_margin="@dimen/text_margin"
app:label="@string/label_constitution"
app:maxValue="99"
app:minValue="1"
app:stepAmount="1" />
<TextView
android:id="@+id/constitution"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="20 ft." />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_constitution"
android:textAppearance="?attr/textAppearanceSubtitle1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/constitution_decrement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_decrement_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/constitution_increment"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/constitution_increment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_increment_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
<com.majinnaibu.monstercards.ui.components.Stepper
android:id="@+id/intelligence"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin">
android:layout_margin="@dimen/text_margin"
app:label="@string/label_intelligence"
app:maxValue="99"
app:minValue="1"
app:stepAmount="1" />
<TextView
android:id="@+id/intelligence"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="20 ft." />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_intelligence"
android:textAppearance="?attr/textAppearanceSubtitle1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/intelligence_decrement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_decrement_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/intelligence_increment"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/intelligence_increment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_increment_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
<com.majinnaibu.monstercards.ui.components.Stepper
android:id="@+id/wisdom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin">
android:layout_margin="@dimen/text_margin"
app:label="@string/label_wisdom"
app:maxValue="99"
app:minValue="1"
app:stepAmount="1" />
<TextView
android:id="@+id/wisdom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="20 ft." />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_wisdom"
android:textAppearance="?attr/textAppearanceSubtitle1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/wisdom_decrement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_decrement_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/wisdom_increment"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/wisdom_increment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_increment_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
<com.majinnaibu.monstercards.ui.components.Stepper
android:id="@+id/charisma"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin">
<TextView
android:id="@+id/charisma"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="20 ft." />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_charisma"
android:textAppearance="?attr/textAppearanceSubtitle1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/charisma_decrement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_decrement_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/charisma_increment"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/charisma_increment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_increment_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
android:layout_margin="@dimen/text_margin"
app:label="@string/label_charisma"
app:maxValue="99"
app:minValue="1"
app:stepAmount="1" />
</LinearLayout>
</ScrollView>

View File

@@ -11,215 +11,55 @@
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
<com.majinnaibu.monstercards.ui.components.Stepper
android:id="@+id/baseSpeed"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin">
android:layout_margin="@dimen/text_margin"
app:label="@string/label_base_speed"
app:maxValue="1000"
app:minValue="0"
app:stepAmount="5" />
<TextView
android:id="@+id/baseSpeed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="20 ft." />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_base_speed"
android:textAppearance="?attr/textAppearanceSubtitle1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/baseSpeed_decrement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_decrement_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/baseSpeed_increment"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/baseSpeed_increment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_increment_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
<com.majinnaibu.monstercards.ui.components.Stepper
android:id="@+id/burrowSpeed"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin">
android:layout_margin="@dimen/text_margin"
app:label="@string/label_burrow_speed"
app:maxValue="1000"
app:minValue="0"
app:stepAmount="5" />
<TextView
android:id="@+id/burrowSpeed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="20 ft." />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_burrow_speed"
android:textAppearance="?attr/textAppearanceSubtitle1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/burrowSpeed_decrement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_decrement_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/burrowSpeed_increment"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/burrowSpeed_increment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_increment_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
<com.majinnaibu.monstercards.ui.components.Stepper
android:id="@+id/climbSpeed"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin">
android:layout_margin="@dimen/text_margin"
app:label="@string/label_climb_speed"
app:maxValue="1000"
app:minValue="0"
app:stepAmount="5" />
<TextView
android:id="@+id/climbSpeed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="20 ft." />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_climb_speed"
android:textAppearance="?attr/textAppearanceSubtitle1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/climbSpeed_decrement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_decrement_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/climbSpeed_increment"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/climbSpeed_increment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_increment_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
<com.majinnaibu.monstercards.ui.components.Stepper
android:id="@+id/flySpeed"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin">
android:layout_margin="@dimen/text_margin"
app:label="@string/label_fly_speed"
app:maxValue="1000"
app:minValue="0"
app:stepAmount="5" />
<TextView
android:id="@+id/flySpeed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="20 ft." />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?attr/textAppearanceSubtitle1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Fly Speed" />
<Button
android:id="@+id/flySpeed_decrement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_decrement_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/flySpeed_increment"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/flySpeed_increment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_increment_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
<com.majinnaibu.monstercards.ui.components.Stepper
android:id="@+id/swimSpeed"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/text_margin">
<TextView
android:id="@+id/swimSpeed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="20 ft." />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?attr/textAppearanceSubtitle1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Swim Speed" />
<Button
android:id="@+id/swimSpeed_decrement"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_decrement_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/swimSpeed_increment"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/swimSpeed_increment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/label_increment_field"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
android:layout_margin="@dimen/text_margin"
app:label="@string/label_swim_speed"
app:maxValue="1000"
app:minValue="0"
app:stepAmount="5" />
<com.google.android.material.switchmaterial.SwitchMaterial
android:id="@+id/canHover"

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="Stepper">
<attr name="stepAmount" format="integer" />
<attr name="minValue" format="integer" />
<attr name="maxValue" format="integer" />
<attr name="label" format="string" localization="suggested" />
</declare-styleable>
</resources>

View File

@@ -65,5 +65,7 @@
<string name="title_library">Library</string>
<string name="title_search">Search</string>
<string name="wisdom_abbreviation">WIS</string>
<string name="label_fly_speed">Fly Speed</string>
<string name="label_swim_speed">Swim Speed</string>
</resources>