Squeak.ru - шаблоны программирования

Диалог сжимается, даже если для всей родительской layout_width задано значение fill_parent.

Здесь встретилось еще одно странное поведение. На этот раз мой диалог сжимается по ширине, несмотря на то, что для всей ширины родительского макета установлено значение fill_parent. Вот изображение ... введите описание изображения здесь

Я попытался сделать это мероприятием с темой, установленной как диалог в манифесте. Тем не менее, он ведет себя так же. Однако это становится нормальным, как только я устанавливаю layout_width для первого «Пользовательского соглашения» TextView как fill_parent. Но я не понимаю этого поведения, поскольку оно не должно зависеть от ширины TextView для его собственной ширины. Скажите, пожалуйста, есть ли другой эффективный способ справиться с подобными ситуациями. Мой код для макета ниже:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@layout/gradientback"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:text="User Agreement"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:textColor="#B80303" />

    <View
        android:layout_width="fill_parent"
        android:layout_height="3dip"
        android:background="?android:attr/listDivider" >
    </View>

    <LinearLayout
        android:id="@+id/linearLayout4"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <CheckBox
            android:id="@+id/checkBoxForTermsId"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textColor="#7B4302"
            android:text="I Agree The Terms &amp; Conditions" >
        </CheckBox>

Это не весь код для макета, потому что я не думаю, что он нужен ...

Код для отображения диалога следующий:

private void showAgreementBox() {
        // TODO Auto-generated method stub
        final Dialog dialog = new Dialog(Launcher.this);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.useragreement);
        dialog.setTitle("User Agreement");
        dialog.setCancelable(false);
        final TextView userAg = (TextView) dialog.findViewById(R.id.textViewOfUserAg);
        final CheckBox checkUserAg = (CheckBox) dialog.findViewById(R.id.checkBoxForTermsId);
        final Button continueB = (Button) dialog.findViewById(R.id.continueB);
        checkUserAg.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (checkUserAg.isChecked() == true) {
                    continueB.setEnabled(true);
                } else {
                    continueB.setEnabled(false);
                }
            }
        });

        continueB.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                dialog.dismiss();
                //checkForTrialPeriod(isUserRegisterd);
            }
        });

        Button cancelB = (Button) dialog.findViewById(R.id.cancelB);
        cancelB.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                finish();
            }
        });
        dialog.show();
    }
17.10.2013

  • слово пример не пример! :-) 17.10.2013
  • @bofredo: Что, если я скажу, что это Храм ... :) 17.10.2013
  • хехехе, я тоже об этом думал, но думаю, шансы были против;) 17.10.2013
  • но на самом деле у меня такие же проблемы с dialogFragments, как у вас, и мне любопытно решение! 17.10.2013
  • хм .... посмотрим, сталкивался ли еще кто-нибудь с этим чудаком ... :) 17.10.2013
  • @VikramSingh разместите код, в котором вы создаете диалог. 17.10.2013
  • @JaAd: добавлен код для диалога .. 17.10.2013

Ответы:


1

Исправьте ширину родительского макета

 android:layout_width="400dp"

fill_parent работает для Activity xml, но для диалогов вам необходимо установить ширину.

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

Вы также можете установить ширину как полноэкранный, используя

dialog.getWindow().getAttributes().width = LayoutParams.FILL_PARENT;

Почему такое поведение отображается в диалоговом окне

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

Взял ссылку из этого ответа.

17.10.2013
  • Я думаю, он ищет более универсальное решение, которое работает на разных устройствах. 17.10.2013
  • @bofredo У меня есть обновленный ответ. Спасибо за ваш комментарий. 17.10.2013
  • Я уже пробовал разместить изображение в фоновом режиме, и это решает проблему, но я не хочу этого делать, поскольку это увеличивает размер моего приложения. Но вопрос в том, почему это зависит от ширины моего текстового представления заголовка, а не от любого другого макета или представления ... 17.10.2013
  • Обновленный ответ снова. 17.10.2013
  • Вторая половина вашего ответа сработала ... спасибо ... +1 за информацию о теме диалога ... :) 18.10.2013

  • 2
    setContentView(R.layout.layout_name);
        getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);
    

    это сработало для меня.

    23.08.2017
    Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...