активность как диалог в андроиде - PullRequest
9 голосов
/ 03 апреля 2012

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

Я пытался сделать прозрачный родительский макет, который не похож на диалог ..

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

тогдаx заранее ... !!! примеры будут оценены .. !!!!!

Ответы [ 6 ]

18 голосов
/ 03 апреля 2012

попробуйте следующее свойство

    this.setFinishOnTouchOutside(false);
7 голосов
/ 03 апреля 2012

Внесите изменения в код в соответствии с вашими потребностями.

Спасибо

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@android:color/transparent"
        android:orientation="vertical"
        android:paddingBottom="20dp" >
        <RelativeLayout
            android:id="@+id/RlayMain"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="30dp"
            android:layout_marginTop="120dp"
            android:background="#FFFFFF"
            android:padding="10dp" >
            <TextView
                android:id="@+id/txtsignin"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:text="SIGN IN"
                android:textColor="#000000"
                android:textSize="25sp" />
            <EditText
                android:id="@+id/edtUserName"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/txtsignin"
                android:layout_marginTop="10dp"
                android:layout_toRightOf="@+id/txtuser"
                android:hint="USERNAME" />
            <EditText
                android:id="@+id/edtPassword"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/edtUserName"
                android:layout_marginTop="10dp"
                android:hint="PASSWORD"
                android:inputType="textPassword" />
            <Button
                android:id="@+id/btnSignIn"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/edtPassword"
                android:layout_marginTop="10dp"
                android:paddingBottom="10dp"
                android:paddingTop="10dp"
                android:text="Sign In" >
            </Button>
            <Button
                android:id="@+id/btnSignUp"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/btnSignIn"
                android:layout_marginTop="10dp"
                android:paddingBottom="10dp"
                android:paddingTop="10dp"
                android:text="Sign Up For Free!" >
            </Button>
        </RelativeLayout>
    </RelativeLayout>
3 голосов
/ 03 апреля 2012

, если вы еще не пробовали, то это способ достижения активности в виде диалога: в файле манифеста добавьте к своей активности следующий атрибут:

     <activity
        android:name=".MyActivityName"
        android:theme="@android:style/Theme.Dialog" />
2 голосов
/ 23 января 2013

Чтобы избежать закрытия активности при нажатии за пределами окна из API 11 как уже упоминалось Vivek, используйте this.setFinishOnTouchOutside (false);

, но для предыдущих API используйте этот код:

@Override
public boolean onTouchEvent(MotionEvent event) {
    if ( event.getAction() == MotionEvent.ACTION_DOWN &&  isOutOfBounds(this, event)){
        return true;
    }
    return super.onTouchEvent(event);
}

private boolean isOutOfBounds(Activity context, MotionEvent event) {
    final int x = (int) event.getX();
    final int y = (int) event.getY();
    final int slop = ViewConfiguration.get(context).getScaledWindowTouchSlop();
    final View decorView = context.getWindow().getDecorView();
    return (x < -slop) || (y < -slop)
            || (x > (decorView.getWidth()+slop))
            || (y > (decorView.getHeight()+slop));
}
2 голосов
/ 03 апреля 2012

Начать действие как диалог, который я определил:

<activity android:theme="@android:style/Theme.Dialog" />

Теперь, когда я startActivity(), он отображается как диалог, а родительская активность отображается за ним.Мне нужна кнопка, которую при нажатии диалоговое окно закрывает, и родительская активность должна отображаться без обновления страницы.

Создать действие, как мы обычно его создаем.

Также установите флажок CustomDialogActivity.java наandroid.com

Я думаю, вы должны создать активность в виде диалога, это помогает.

Таким образом, вы можете установить стиль и тему для своей деятельности.

0 голосов
/ 23 октября 2016

Использование одинаковых действий в мобильных устройствах и планшетах.

Мобильный: -

  1. Перейти к Res -> значения.
  2. Открыть стили.xml и добавьте следующие настройки темы.

styles.xml: -

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

Планшет: - Запуск операции в виде диалога.

  1. Перейти к "res".
  2. Создать новую папку "values-sw720dp".
  3. Создать новый файл styles.xml и добавить следующие настройки темы.

styles.xml: -

<style name="AppTheme" parent="Theme.AppCompat.Light.Dialog">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="colorPrimary">@color/primary_color</item>
    <item name="colorPrimaryDark">@color/primary_dark_color</item>
    <item name="android:textColorPrimary">@color/white</item>
    <item name="colorAccent">@color/material_green_800</item>
    <item name="colorButtonNormal">@color/material_green_800</item>
    <item name="windowFixedHeightMajor">800dp</item>
    <item name="windowFixedHeightMinor">800dp</item>
</style>

Manifest.xml: -

    <activity
    android:name=".LogInActivity"
    android:label="@string/title_activity_log_in"
    android:screenOrientation="portrait"
    android:theme="@style/AppTheme"            //set the theme activity
    android:windowSoftInputMode="adjustPan" >
    </activity>
...