Adds actions to monster cards.
This commit is contained in:
@@ -0,0 +1,25 @@
|
|||||||
|
package com.majinnaibu.monstercards.models;
|
||||||
|
|
||||||
|
public class Action {
|
||||||
|
|
||||||
|
public Action(String name, String description) {
|
||||||
|
mName = name;
|
||||||
|
mDescription = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String mName;
|
||||||
|
public String getName() {
|
||||||
|
return mName;
|
||||||
|
}
|
||||||
|
public void setName(String name) {
|
||||||
|
mName = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String mDescription;
|
||||||
|
public String getDescription() {
|
||||||
|
return mDescription;
|
||||||
|
}
|
||||||
|
public void setDescription(String description) {
|
||||||
|
mDescription = description;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -14,6 +14,7 @@ public class Monster {
|
|||||||
|
|
||||||
public Monster() {
|
public Monster() {
|
||||||
mAbilities = new ArrayList<>();
|
mAbilities = new ArrayList<>();
|
||||||
|
mActions = new ArrayList<>();
|
||||||
mConditionImmunities = new HashSet<>();
|
mConditionImmunities = new HashSet<>();
|
||||||
mDamageTypes = new HashSet<>();
|
mDamageTypes = new HashSet<>();
|
||||||
mLanguages = new HashSet<>();
|
mLanguages = new HashSet<>();
|
||||||
@@ -979,4 +980,26 @@ public class Monster {
|
|||||||
return getProficiencyBonus() + getAbilityModifier(abilityScoreName);
|
return getProficiencyBonus() + getAbilityModifier(abilityScoreName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<String> getActionDescriptions() {
|
||||||
|
ArrayList<String> actions = new ArrayList<>();
|
||||||
|
for (Action action : getActions()) {
|
||||||
|
actions.add(getPlaceholderReplacedText(String.format("__%s__ %s", action.getName(), action.getDescription())));
|
||||||
|
}
|
||||||
|
return actions;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ArrayList<Action> mActions;
|
||||||
|
public List<Action> getActions() {
|
||||||
|
return mActions;
|
||||||
|
}
|
||||||
|
public void addAction(Action ability) {
|
||||||
|
mActions.add(ability);
|
||||||
|
}
|
||||||
|
public void removeAction(Action ability) {
|
||||||
|
mActions.remove(ability);
|
||||||
|
}
|
||||||
|
public void clearActions() {
|
||||||
|
mActions.clear();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import com.majinnaibu.monstercards.R;
|
|||||||
import com.majinnaibu.monstercards.helpers.CommonMarkHelper;
|
import com.majinnaibu.monstercards.helpers.CommonMarkHelper;
|
||||||
import com.majinnaibu.monstercards.helpers.StringHelper;
|
import com.majinnaibu.monstercards.helpers.StringHelper;
|
||||||
import com.majinnaibu.monstercards.models.Ability;
|
import com.majinnaibu.monstercards.models.Ability;
|
||||||
|
import com.majinnaibu.monstercards.models.Action;
|
||||||
import com.majinnaibu.monstercards.models.DamageType;
|
import com.majinnaibu.monstercards.models.DamageType;
|
||||||
import com.majinnaibu.monstercards.models.Language;
|
import com.majinnaibu.monstercards.models.Language;
|
||||||
import com.majinnaibu.monstercards.models.Monster;
|
import com.majinnaibu.monstercards.models.Monster;
|
||||||
@@ -117,7 +118,10 @@ public class MonsterFragment extends Fragment {
|
|||||||
monster.addAbility(new Ability("Spellcasting", "The acolyte is a 1st-level spellcaster. Its spellcasting ability is Wisdom (spell save DC [WIS SAVE], [WIS ATK] to hit with spell attacks). The acolyte has following cleric spells prepared:\n\n\n> Cantrips (at will): _light, sacred flame, thaumaturgy_\n> 1st level (3 slots): _bless, cure wounds, sanctuary_"));
|
monster.addAbility(new Ability("Spellcasting", "The acolyte is a 1st-level spellcaster. Its spellcasting ability is Wisdom (spell save DC [WIS SAVE], [WIS ATK] to hit with spell attacks). The acolyte has following cleric spells prepared:\n\n\n> Cantrips (at will): _light, sacred flame, thaumaturgy_\n> 1st level (3 slots): _bless, cure wounds, sanctuary_"));
|
||||||
monster.addAbility(new Ability("Amphibious", "The dragon can breathe air and water."));
|
monster.addAbility(new Ability("Amphibious", "The dragon can breathe air and water."));
|
||||||
monster.addAbility(new Ability("Legendary Resistance (3/Day)", "If the dragon fails a saving throw, it can choose to succeed instead."));
|
monster.addAbility(new Ability("Legendary Resistance (3/Day)", "If the dragon fails a saving throw, it can choose to succeed instead."));
|
||||||
|
// Actions
|
||||||
|
monster.addAction(new Action("Club", "_Melee Weapon Attack:_ [STR ATK] to hit, reach 5 ft., one target. _Hit:_ 2 (1d4) bludgeoning damage."));
|
||||||
// END remove block
|
// END remove block
|
||||||
|
|
||||||
monsterViewModel = new ViewModelProvider(this).get(MonsterViewModel.class);
|
monsterViewModel = new ViewModelProvider(this).get(MonsterViewModel.class);
|
||||||
View root = inflater.inflate(R.layout.fragment_monster, container, false);
|
View root = inflater.inflate(R.layout.fragment_monster, container, false);
|
||||||
monsterViewModel.setMonster(monster);
|
monsterViewModel.setMonster(monster);
|
||||||
@@ -351,6 +355,32 @@ public class MonsterFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
final LinearLayout monsterActions = root.findViewById(R.id.actions);
|
||||||
|
monsterViewModel.getActions().observe(getViewLifecycleOwner(), new Observer<List<String>>() {
|
||||||
|
@Override
|
||||||
|
public void onChanged(List<String> actions) {
|
||||||
|
Context context = getContext();
|
||||||
|
DisplayMetrics displayMetrics = null;
|
||||||
|
if (context != null) {
|
||||||
|
Resources resources = context.getResources();
|
||||||
|
if (resources != null) {
|
||||||
|
displayMetrics = resources.getDisplayMetrics();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
monsterActions.removeAllViews();
|
||||||
|
if (actions != null) {
|
||||||
|
for (String action : actions) {
|
||||||
|
TextView tvAction = new TextView(getContext());
|
||||||
|
tvAction.setText(Html.fromHtml(CommonMarkHelper.toHtml(action)));
|
||||||
|
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
|
||||||
|
layoutParams.topMargin = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, displayMetrics);
|
||||||
|
tvAction.setLayoutParams(layoutParams);
|
||||||
|
monsterActions.addView(tvAction);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,105 +13,79 @@ public class MonsterViewModel extends ViewModel {
|
|||||||
|
|
||||||
public MonsterViewModel() {
|
public MonsterViewModel() {
|
||||||
mMonster = null;
|
mMonster = null;
|
||||||
mName = new MutableLiveData<>();
|
mAbilities = new MutableLiveData<>();
|
||||||
mName.setValue("");
|
mAbilities.setValue(new ArrayList<String>());
|
||||||
mMeta = new MutableLiveData<>();
|
mActions = new MutableLiveData<>();
|
||||||
mMeta.setValue("");
|
mActions.setValue(new ArrayList<String>());
|
||||||
mArmorClass = new MutableLiveData<>();
|
mArmorClass = new MutableLiveData<>();
|
||||||
mArmorClass.setValue("");
|
mArmorClass.setValue("");
|
||||||
|
mChallenge = new MutableLiveData<>();
|
||||||
|
mChallenge.setValue("");
|
||||||
|
mCharisma = new MutableLiveData<>();
|
||||||
|
mCharisma.setValue("");
|
||||||
|
mConditionImmunities = new MutableLiveData<>();
|
||||||
|
mConditionImmunities.setValue("");
|
||||||
|
mConstitution = new MutableLiveData<>();
|
||||||
|
mConstitution.setValue("");
|
||||||
|
mDamageImmunities = new MutableLiveData<>();
|
||||||
|
mDamageImmunities.setValue("");
|
||||||
|
mDamageResistances = new MutableLiveData<>();
|
||||||
|
mDamageResistances.setValue("");
|
||||||
|
mDamageVulnerabilities = new MutableLiveData<>();
|
||||||
|
mDamageVulnerabilities.setValue("");
|
||||||
|
mDexterity = new MutableLiveData<>();
|
||||||
|
mDexterity.setValue("");
|
||||||
mHitPoints = new MutableLiveData<>();
|
mHitPoints = new MutableLiveData<>();
|
||||||
mHitPoints.setValue("");
|
mHitPoints.setValue("");
|
||||||
|
mIntelligence = new MutableLiveData<>();
|
||||||
|
mIntelligence.setValue("");
|
||||||
|
mLanguages = new MutableLiveData<>();
|
||||||
|
mLanguages.setValue("");
|
||||||
|
mMeta = new MutableLiveData<>();
|
||||||
|
mMeta.setValue("");
|
||||||
|
mName = new MutableLiveData<>();
|
||||||
|
mName.setValue("");
|
||||||
|
mSavingThrows = new MutableLiveData<>();
|
||||||
|
mSavingThrows.setValue("");
|
||||||
|
mSenses = new MutableLiveData<>();
|
||||||
|
mSenses.setValue("");
|
||||||
|
mSkills = new MutableLiveData<>();
|
||||||
|
mSkills.setValue("");
|
||||||
mSpeed = new MutableLiveData<>();
|
mSpeed = new MutableLiveData<>();
|
||||||
mSpeed.setValue("");
|
mSpeed.setValue("");
|
||||||
mStrength = new MutableLiveData<>();
|
mStrength = new MutableLiveData<>();
|
||||||
mStrength.setValue("");
|
mStrength.setValue("");
|
||||||
mDexterity = new MutableLiveData<>();
|
|
||||||
mDexterity.setValue("");
|
|
||||||
mConstitution = new MutableLiveData<>();
|
|
||||||
mConstitution.setValue("");
|
|
||||||
mIntelligence = new MutableLiveData<>();
|
|
||||||
mIntelligence.setValue("");
|
|
||||||
mWisdom = new MutableLiveData<>();
|
mWisdom = new MutableLiveData<>();
|
||||||
mWisdom.setValue("");
|
mWisdom.setValue("");
|
||||||
mCharisma = new MutableLiveData<>();
|
|
||||||
mCharisma.setValue("");
|
|
||||||
mSavingThrows = new MutableLiveData<>();
|
|
||||||
mSavingThrows.setValue("");
|
|
||||||
mSkills = new MutableLiveData<>();
|
|
||||||
mSkills.setValue("");
|
|
||||||
mDamageVulnerabilities = new MutableLiveData<>();
|
|
||||||
mDamageVulnerabilities.setValue("");
|
|
||||||
mDamageResistances = new MutableLiveData<>();
|
|
||||||
mDamageResistances.setValue("");
|
|
||||||
mDamageImmunities = new MutableLiveData<>();
|
|
||||||
mDamageImmunities.setValue("");
|
|
||||||
mConditionImmunities = new MutableLiveData<>();
|
|
||||||
mConditionImmunities.setValue("");
|
|
||||||
mSenses = new MutableLiveData<>();
|
|
||||||
mSenses.setValue("");
|
|
||||||
mLanguages = new MutableLiveData<>();
|
|
||||||
mLanguages.setValue("");
|
|
||||||
mChallenge = new MutableLiveData<>();
|
|
||||||
mChallenge.setValue("");
|
|
||||||
mAbilities = new MutableLiveData<>();
|
|
||||||
mAbilities.setValue(new ArrayList<String>());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private MutableLiveData<String> mName;
|
private MutableLiveData<List<String>> mAbilities;
|
||||||
public LiveData<String> getName() {
|
public LiveData<List<String>> getAbilities() {
|
||||||
return mName;
|
return mAbilities;
|
||||||
}
|
}
|
||||||
private MutableLiveData<String> mMeta;
|
private MutableLiveData<List<String>> mActions;
|
||||||
public LiveData<String> getMeta() {
|
public LiveData<List<String>> getActions() {
|
||||||
return mMeta;
|
return mActions;
|
||||||
}
|
}
|
||||||
private MutableLiveData<String> mArmorClass;
|
private MutableLiveData<String> mArmorClass;
|
||||||
public LiveData<String> getArmorClass() {
|
public LiveData<String> getArmorClass() {
|
||||||
return mArmorClass;
|
return mArmorClass;
|
||||||
}
|
}
|
||||||
private MutableLiveData<String> mHitPoints;
|
private MutableLiveData<String> mChallenge;
|
||||||
public LiveData<String> getHitPoints() {
|
public LiveData<String> getChallenge() {
|
||||||
return mHitPoints;
|
return mChallenge;
|
||||||
}
|
|
||||||
private MutableLiveData<String> mSpeed;
|
|
||||||
public LiveData<String> getSpeed() {
|
|
||||||
return mSpeed;
|
|
||||||
}
|
|
||||||
private MutableLiveData<String> mStrength;
|
|
||||||
public LiveData<String> getStrength() {
|
|
||||||
return mStrength;
|
|
||||||
}
|
|
||||||
private MutableLiveData<String> mDexterity;
|
|
||||||
public LiveData<String> getDexterity() {
|
|
||||||
return mDexterity;
|
|
||||||
}
|
|
||||||
private MutableLiveData<String> mConstitution;
|
|
||||||
public LiveData<String> getConstitution() {
|
|
||||||
return mConstitution;
|
|
||||||
}
|
|
||||||
private MutableLiveData<String> mIntelligence;
|
|
||||||
public LiveData<String> getIntelligence() {
|
|
||||||
return mIntelligence;
|
|
||||||
}
|
|
||||||
private MutableLiveData<String> mWisdom;
|
|
||||||
public LiveData<String> getWisdom() {
|
|
||||||
return mWisdom;
|
|
||||||
}
|
}
|
||||||
private MutableLiveData<String> mCharisma;
|
private MutableLiveData<String> mCharisma;
|
||||||
public LiveData<String> getCharisma() {
|
public LiveData<String> getCharisma() {
|
||||||
return mCharisma;
|
return mCharisma;
|
||||||
}
|
}
|
||||||
private MutableLiveData<String> mSavingThrows;
|
private MutableLiveData<String> mConditionImmunities;
|
||||||
public LiveData<String> getSavingThrows() {
|
public LiveData<String> getConditionImmunities() {
|
||||||
return mSavingThrows;
|
return mConditionImmunities;
|
||||||
}
|
}
|
||||||
private MutableLiveData<String> mSkills;
|
private MutableLiveData<String> mConstitution;
|
||||||
public LiveData<String> getSkills() {
|
public LiveData<String> getConstitution() {
|
||||||
return mSkills;
|
return mConstitution;
|
||||||
}
|
|
||||||
private MutableLiveData<String> mDamageVulnerabilities;
|
|
||||||
public LiveData<String> getDamageVulnerabilities() {
|
|
||||||
return mDamageVulnerabilities;
|
|
||||||
}
|
}
|
||||||
private MutableLiveData<String> mDamageResistances;
|
private MutableLiveData<String> mDamageResistances;
|
||||||
public LiveData<String> getDamageResistances() {
|
public LiveData<String> getDamageResistances() {
|
||||||
@@ -121,50 +95,84 @@ public class MonsterViewModel extends ViewModel {
|
|||||||
public LiveData<String> getDamageImmunities() {
|
public LiveData<String> getDamageImmunities() {
|
||||||
return mDamageImmunities;
|
return mDamageImmunities;
|
||||||
}
|
}
|
||||||
private MutableLiveData<String> mConditionImmunities;
|
private MutableLiveData<String> mDamageVulnerabilities;
|
||||||
public LiveData<String> getConditionImmunities() {
|
public LiveData<String> getDamageVulnerabilities() {
|
||||||
return mConditionImmunities;
|
return mDamageVulnerabilities;
|
||||||
}
|
}
|
||||||
private MutableLiveData<String> mSenses;
|
private MutableLiveData<String> mDexterity;
|
||||||
public LiveData<String> getSenses() {
|
public LiveData<String> getDexterity() {
|
||||||
return mSenses;
|
return mDexterity;
|
||||||
|
}
|
||||||
|
private MutableLiveData<String> mHitPoints;
|
||||||
|
public LiveData<String> getHitPoints() {
|
||||||
|
return mHitPoints;
|
||||||
|
}
|
||||||
|
private MutableLiveData<String> mIntelligence;
|
||||||
|
public LiveData<String> getIntelligence() {
|
||||||
|
return mIntelligence;
|
||||||
}
|
}
|
||||||
private MutableLiveData<String> mLanguages;
|
private MutableLiveData<String> mLanguages;
|
||||||
public LiveData<String> getLanguages() {
|
public LiveData<String> getLanguages() {
|
||||||
return mLanguages;
|
return mLanguages;
|
||||||
}
|
}
|
||||||
private MutableLiveData<String> mChallenge;
|
private MutableLiveData<String> mMeta;
|
||||||
public LiveData<String> getChallenge() {
|
public LiveData<String> getMeta() {
|
||||||
return mChallenge;
|
return mMeta;
|
||||||
}
|
}
|
||||||
private MutableLiveData<List<String>> mAbilities;
|
private MutableLiveData<String> mName;
|
||||||
public LiveData<List<String>> getAbilities() {
|
public LiveData<String> getName() {
|
||||||
return mAbilities;
|
return mName;
|
||||||
|
}
|
||||||
|
private MutableLiveData<String> mSavingThrows;
|
||||||
|
public LiveData<String> getSavingThrows() {
|
||||||
|
return mSavingThrows;
|
||||||
|
}
|
||||||
|
private MutableLiveData<String> mSenses;
|
||||||
|
public LiveData<String> getSenses() {
|
||||||
|
return mSenses;
|
||||||
|
}
|
||||||
|
private MutableLiveData<String> mSkills;
|
||||||
|
public LiveData<String> getSkills() {
|
||||||
|
return mSkills;
|
||||||
|
}
|
||||||
|
private MutableLiveData<String> mSpeed;
|
||||||
|
public LiveData<String> getSpeed() {
|
||||||
|
return mSpeed;
|
||||||
|
}
|
||||||
|
private MutableLiveData<String> mStrength;
|
||||||
|
public LiveData<String> getStrength() {
|
||||||
|
return mStrength;
|
||||||
|
}
|
||||||
|
private MutableLiveData<String> mWisdom;
|
||||||
|
public LiveData<String> getWisdom() {
|
||||||
|
return mWisdom;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Monster mMonster;
|
private Monster mMonster;
|
||||||
public void setMonster(Monster monster) {
|
public void setMonster(Monster monster) {
|
||||||
mMonster = monster;
|
mMonster = monster;
|
||||||
mName.setValue(mMonster.getName());
|
|
||||||
mMeta.setValue(mMonster.getMeta());
|
mAbilities.setValue(mMonster.getAbilityDescriptions());
|
||||||
|
mActions.setValue(mMonster.getActionDescriptions());
|
||||||
mArmorClass.setValue(mMonster.getArmorClass());
|
mArmorClass.setValue(mMonster.getArmorClass());
|
||||||
|
mChallenge.setValue(mMonster.getChallengeRatingDescription());
|
||||||
|
mCharisma.setValue(monster.getCharismaDescription());
|
||||||
|
mConditionImmunities.setValue(mMonster.getConditionImmunitiesDescription());
|
||||||
|
mConstitution.setValue(monster.getConstitutionDescription());
|
||||||
|
mDamageImmunities.setValue(mMonster.getDamageImmunitiesDescription());
|
||||||
|
mDamageResistances.setValue(mMonster.getDamageResistancesDescription());
|
||||||
|
mDamageVulnerabilities.setValue(mMonster.getDamageVulnerabilitiesDescription());
|
||||||
|
mDexterity.setValue(monster.getDexterityDescription());
|
||||||
mHitPoints.setValue(mMonster.getHitPoints());
|
mHitPoints.setValue(mMonster.getHitPoints());
|
||||||
|
mIntelligence.setValue(monster.getIntelligenceDescription());
|
||||||
|
mLanguages.setValue(mMonster.getLanguagesDescription());
|
||||||
|
mMeta.setValue(mMonster.getMeta());
|
||||||
|
mName.setValue(mMonster.getName());
|
||||||
|
mSavingThrows.setValue(monster.getSavingThrowsDescription());
|
||||||
|
mSenses.setValue(monster.getSensesDescription());
|
||||||
|
mSkills.setValue(monster.getSkillsDescription());
|
||||||
mSpeed.setValue(mMonster.getSpeedText());
|
mSpeed.setValue(mMonster.getSpeedText());
|
||||||
mStrength.setValue(monster.getStrengthDescription());
|
mStrength.setValue(monster.getStrengthDescription());
|
||||||
mDexterity.setValue(monster.getDexterityDescription());
|
|
||||||
mConstitution.setValue(monster.getConstitutionDescription());
|
|
||||||
mIntelligence.setValue(monster.getIntelligenceDescription());
|
|
||||||
mWisdom.setValue(monster.getWisdomDescription());
|
mWisdom.setValue(monster.getWisdomDescription());
|
||||||
mCharisma.setValue(monster.getCharismaDescription());
|
|
||||||
mSavingThrows.setValue(monster.getSavingThrowsDescription());
|
|
||||||
mSkills.setValue(monster.getSkillsDescription());
|
|
||||||
mDamageVulnerabilities.setValue(mMonster.getDamageVulnerabilitiesDescription());
|
|
||||||
mDamageResistances.setValue(mMonster.getDamageResistancesDescription());
|
|
||||||
mDamageImmunities.setValue(mMonster.getDamageImmunitiesDescription());
|
|
||||||
mConditionImmunities.setValue(mMonster.getConditionImmunitiesDescription());
|
|
||||||
mSenses.setValue(monster.getSensesDescription());
|
|
||||||
mLanguages.setValue(mMonster.getLanguagesDescription());
|
|
||||||
mChallenge.setValue(mMonster.getChallengeRatingDescription());
|
|
||||||
mAbilities.setValue(mMonster.getAbilityDescriptions());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -437,5 +437,48 @@
|
|||||||
app:layout_constraintTop_toBottomOf="@+id/challenge"
|
app:layout_constraintTop_toBottomOf="@+id/challenge"
|
||||||
tools:text="Damage Vulnerabilities" />
|
tools:text="Damage Vulnerabilities" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/label_actions"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/abilities"
|
||||||
|
android:text="@string/actions_label" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/divider4"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="8dp"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
android:contentDescription="@string/section_divider"
|
||||||
|
android:scaleType="fitXY"
|
||||||
|
android:src="@drawable/ic_section_divider"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/label_actions" />
|
||||||
|
|
||||||
|
<!-- Actions -->
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/actions"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="8dp"
|
||||||
|
android:layout_marginTop="0dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginBottom="0dp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/divider4"
|
||||||
|
tools:text="Damage Vulnerabilities" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
@@ -1,16 +1,17 @@
|
|||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">MonsterCards</string>
|
|
||||||
<string name="title_dashboard">Dashboard</string>
|
|
||||||
<string name="title_search">Search</string>
|
|
||||||
<string name="title_collections">Collections</string>
|
|
||||||
<string name="title_library">Library</string>
|
|
||||||
<string name="action_search">Search</string>
|
<string name="action_search">Search</string>
|
||||||
|
<string name="actions_label">Actions</string>
|
||||||
|
<string name="app_name">MonsterCards</string>
|
||||||
|
<string name="charisma_abbreviation">CHA</string>
|
||||||
|
<string name="constitution_abbreviation">CON</string>
|
||||||
|
<string name="dexterity_abbreviation">DEX</string>
|
||||||
|
<string name="intelligence_abbreviation">INT</string>
|
||||||
<string name="label_search_query">Query</string>
|
<string name="label_search_query">Query</string>
|
||||||
<string name="section_divider">section divider</string>
|
<string name="section_divider">section divider</string>
|
||||||
<string name="strength_abbreviation">STR</string>
|
<string name="strength_abbreviation">STR</string>
|
||||||
<string name="dexterity_abbreviation">DEX</string>
|
<string name="title_collections">Collections</string>
|
||||||
<string name="constitution_abbreviation">CON</string>
|
<string name="title_dashboard">Dashboard</string>
|
||||||
<string name="intelligence_abbreviation">INT</string>
|
<string name="title_library">Library</string>
|
||||||
|
<string name="title_search">Search</string>
|
||||||
<string name="wisdom_abbreviation">WIS</string>
|
<string name="wisdom_abbreviation">WIS</string>
|
||||||
<string name="charisma_abbreviation">CHA</string>
|
|
||||||
</resources>
|
</resources>
|
||||||
Reference in New Issue
Block a user