我想使用 activity as dialog
,我将活动主题设为对话框&我成功。
但
我有这个问题是当我点击活动之外
它自动关闭&上一个活动开始..
我尝试了制作透明父布局的东西,它看起来不像是对话框..
我想使用此活动在我的应用程序中创建新帐户,因为它只有3个字段,因此在平板电脑中它看起来空间不大...所以我想将活动用作对话框......
然后提前...... !!! 例子将不胜感激.. !!!!!
答案 0 :(得分:18)
尝试使用以下属性
this.setFinishOnTouchOutside(false);
答案 1 :(得分:7)
根据需要更改代码。
由于
<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>
答案 2 :(得分:3)
如果您还没有尝试过,那么这就是以对话框方式实现活动的方法: 在您的清单文件中,将以下属性添加到您的活动中:
<activity
android:name=".MyActivityName"
android:theme="@android:style/Theme.Dialog" />
答案 3 :(得分:2)
以我定义的对话框启动活动:
<activity android:theme="@android:style/Theme.Dialog" />
现在,当我startActivity()
时,它显示为对话框,并在其后面显示父活动。我想要一个按钮,当单击Dialog时,它会被解除,父节点活动应该显示而不刷新页面。
创建一个我们通常创建的活动。
同时检查CustomDialogActivity.java on android.com
我认为您应该将对象创建为对话框,这会有所帮助。
这样,您可以为活动设置样式和主题。
答案 4 :(得分:2)
关于单击外部窗口时避免关闭活动的问题 来自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));
}
答案 5 :(得分:0)
在移动设备和平板电脑中使用相同的活动。
移动: -
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>
平板电脑:以对话框启动活动。
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>