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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章