Как заставить аварийное диалоговое окно заполнить 90% размера экрана?

Я не совсем уверен, но, похоже, у вас проблемы как с аспектом SQL, так и с представлением классов ваших данных.

Если вы точно знаете, что будет только определенное количество правил, вы можете подойти к нему так, как в настоящее время. Кроме того, я бы сделал функцию 'getter' для списка правил, т.е.

List<String> get rules => [rule1, rule2, rule2, ...].where((item) => item != null).toList()

Обратите внимание, что если бы вы использовали конструктор, вы могли бы вместо этого построить список в конструкторе следующим образом:

class Friend {
  int id;
  String name;
  String pic;
  bool play;
  String rule0;
  String rule1;
  String rule2;
  String rule3;
  String rule4;
  String rule5;
  String rule6;
  String rule7;
  String rule8;
  String rule9;

  List<String> rules;

  Friend(
      {this.id,
      this.name,
      this.pic,
      this.play,
      this.rule0,
      this.rule1,
      this.rule2,
      this.rule3,
      this.rule4,
      this.rule5,
      this.rule6,
      this.rule7,
      this.rule8,
      this.rule9})
      : rules = [
          rule0,
          rule1,
          rule2,
          rule3,
          rule4,
          rule5,
          rule6,
          rule7,
          rule8,
          rule9,
        ].where((item) => item != null).toList(growable: false);
}

Я бы не рекомендовал этого (или если вы это сделаете, вы вероятно, следует сделать либо правило *, либо правила частным, либо каким-либо образом поддерживать состояние). В списке строк хранятся ссылки не на строки rule0, rule1, ..., а на сами строки. Вы можете обойти это, сделав класс Rule и сделав final0-9 final, но это становится немного сложнее.


Скорее всего, имеет смысл иметь динамический список элементов. SQL не справляется с этим, поэтому вам придется создать отдельную таблицу для правил.

У вас будет две таблицы, примерно такие, где id - это ПЕРВИЧНЫЕ КЛЮЧИ, а friendId - ИНОСТРАННЫЙ КЛЮЧ:

Friend(id, name, pic, play) и Rule(id, friendId, text)

Сохранение и обновление станет более сложным сейчас. Вы должны быть более осторожны с ведением списка правил в базе данных, но это не так уж сложно. Если вы знаете, что будете писать в список только из одного места (то есть из одного класса), вы можете сохранить разницу между текущим состоянием класса и начальным состоянием, но реально, если вы не имеете дело с десятками тысяч правил, это, вероятно, не будет иметь значительного значения.

282
задан ROMANIA_engineer 25 August 2017 в 07:05
поделиться

2 ответа

Если Вы используете Ограничительное Расположение , можно установить любое представление в нем, для заполнения процента экрана с:

layout_constraintWidth_percent = "0.8"

Так, например, если у Вас есть ScrollView в диалоговом окне и Вы хотите установить его на процент экранной высоты. Это было бы похоже на это:

<ScrollView
            android:id="@+id/scrollView"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:layout_constraintHeight_percent="0.8">

Hope это помогает кому-то!!

0
ответ дан 23 November 2019 в 01:54
поделиться

Установите android:minWidth и android:minHeight в вашем пользовательском представлении xml. Они могут заставить оповещение не просто обернуть размер содержимого. Использование такого представления должно сделать это:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:minWidth="300dp" 
  android:minHeight="400dp">
  <ImageView
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:background="@drawable/icon"/>
</LinearLayout>
78
ответ дан 23 November 2019 в 01:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: