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>
效果: