本文主要是介绍Android窗口化activity,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Android窗口化activity,即把activity变成如弹出框一样,方法有两种:
1.当使用一般主题,既不使用Theme.AppCompat主题时,可直接在androidManifest.xml为activity直接填写主题声明,如
<activityandroid: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 {@Overrideprotected 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
<activityandroid:name=".DialogActivity"android:label="@string/app_name"android:theme="@style/MyAppCompatDialogTheme"><span style="font-family:Comic Sans MS;">
</</span>activity>
效果:
这篇关于Android窗口化activity的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!