Android窗口化activity

Android窗口化activity,即把activity变成如弹出框一样,方法有两种:

1.当使用一般主题,既不使用Theme.AppCompat主题时,可直接在androidManifest.xml为activity直接填写主题声明,如

<activity
   android:name=".DialogActivity"
   android:theme="@android:style/Theme.Dialog" ><span style="font-family:Comic Sans MS;">
</</span>activity<span style="font-family:Comic Sans MS;">></span>

2.当activity可能使用到Support库,或extends ActionBarActivity时,当你设置上述的方法后,编译器会提示报错并显示activity需要设置主题为Theme.AppCompat。当在这个主题下,窗口化activity只有

android:theme="@style/Theme.AppCompat.DialogWhenLarge"
这个方法,而且还必须是手机屏幕像素较大的情况下才会这样显示,也就是说一般手机不会显示为Dialog类型,所以,我google一下,得出以下方法,详细看例子:

DialogActivity.java

public class DialogActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);

        <span style="font-family:Comic Sans MS;">//设置activity作为弹出框形式的时候的大小</span>
        ViewGroup.LayoutParams params = getWindow().getAttributes();
        params.width = (int)(getWindowManager().getDefaultDisplay().getWidth() * 0.8);
        params.height = (int)(getWindowManager().getDefaultDisplay().getHeight() * 0.8);
        getWindow().setAttributes((WindowManager.LayoutParams)params);
    }

}

styles.xml(主题样式)

<style name="MyAppCompatDialogTheme" parent="Theme.AppCompat">
   <item name="android:windowIsFloating">false</item>
   <item name="android:windowContentOverlay">@null</item>
   <item name="android:windowSoftInputMode">stateAlwaysHidden</item>
   <item name="android:windowActionModeOverlay">true</item>
   <item name="android:windowIsTranslucent">true</item>
</style>

AndroidManifest.xml

<activity
   android:name=".DialogActivity"
   android:label="@string/app_name"
   android:theme="@style/MyAppCompatDialogTheme"><span style="font-family:Comic Sans MS;">
</</span>activity>
效果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值