Nano Hash - криптовалюты, майнинг, программирование

AlertDialog не упаковывает мой контент

Я использую диалоговое окно предупреждения, чтобы отобразить представление с помощью счетчика, чтобы установить период и масштаб диаграммы.

Но он не упаковывает мой контент, и все уроки, которые я пробовал, не увенчались успехом...

Мой код

        LinearLayout vue = new LinearLayout(context);
        vue.setOrientation(LinearLayout.VERTICAL);
        vue.addView(diag.getView());

        choixPeriode = (Spinner) vue.findViewById(R.id.spinner_periode);
        choixEchelle = (Spinner) vue.findViewById(R.id.spinner_echelle);
        if(choixEchelle == null)
            choixEchelle = new Spinner(context);
        final int oldPeriode = DiagramController.PeriodeToPos(this.periode);
        final int oldEchelle = DiagramController.echelleToPos(this.echelle);
        choixPeriode.setSelection(oldPeriode);
        choixEchelle.setSelection(oldEchelle);


        LinearLayout containerButton = new LinearLayout(context);
        containerButton.setGravity(Gravity.CENTER);

        final ImageView croix = ((ImageView) vue.findViewById(R.id.croix));
        final Button ok = new Button(context);
        ok.setText(R.string.valider);
        final Button cancel = new Button(context);
        cancel.setText(android.R.string.cancel);

        containerButton.addView(ok);
        containerButton.addView(cancel);

        vue.addView(containerButton);

        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context);
        dialogBuilder.setView(vue);

        final AlertDialog alertDialog = dialogBuilder.create();
        WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
        lp.copyFrom(alertDialog.getWindow().getAttributes());
        lp.width = WindowManager.LayoutParams.WRAP_CONTENT;
        lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
        alertDialog.getWindow().setAttributes(lp);
        alertDialog.show();

        croix.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                alertDialog.dismiss();
            }
        });

        ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                periode = DiagramController.posToPeriode(choixPeriode.getSelectedItemPosition());
                echelle = DiagramController.posToEchelle(choixEchelle.getSelectedItemPosition());
                changePeriode();
                alertDialog.dismiss();
            }
        });

        cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                alertDialog.dismiss();
            }
        });

diag.getView() возвращает LinearLayout с заголовком, счетчиками и диаграммой.

Результат в портретной ориентации Результат в книжной ориентации

Результат в альбомной ориентации Результат в альбомной ориентации

Результат с пользовательским диалоговым окном

введите здесь описание изображения


  • Я бы предложил сделать собственный диалог (возможно, вы уже пробовали). Если вы не знаете, как это сделать, я опубликую код для вас. 17.05.2017
  • Я думал об этом, но я не знаю, как это сделать. Нет простого решения? 17.05.2017
  • Это просто, я отправлю вам код. Дай мне минуту. 17.05.2017

Ответы:


1

1.) Вам нужно будет создать собственный макет xml.

2.) Создайте новый класс. И напишите свой код в файле onCreate.

public class MyDialog extends Dialog {

private TextView textView;

private Context context;

public MyDialog(Context context) {
    super(context);

    this.context = context;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.my_layout);

    //Your code
    textView = (TextView) findViewById(R.id.textView);


}
}
17.05.2017
  • Дайте мне знать, если это помогло вам. 17.05.2017
  • Он работает отлично !! Спасибо большое ! Я не использовал XML. Я добавил поле View в конструктор и установил с ним contentView 17.05.2017
  • Могу ли я установить размер моего пользовательского диалога? Я пытался использовать getWindow.setLayout, но это не дало никакого эффекта. 17.05.2017
  • Чего именно вы хотите добиться? 17.05.2017
  • Я обновил свой пост с изображением, когда я использую пользовательский диалог 17.05.2017
  • Если я правильно понял, установите minWidth и minHeight для макета контейнера. 17.05.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..