这个demo展示的是一个对话框样式的activity,它看起来像一个对话框,但它实际上是一个activity 只是给这个activity设置了一个对话框的样式。
android允许自定义theme和style,也可以继承已有的 样式,尔后根据需要进行修改。theme应用于application和activity层次,可以为应用或activity 定制统一风格的样式,尔后再使用style针对每个view控件作进一步的美化和修改。
下面我们就来完成这个demo
1.新建activity_custom_dialog布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="Example of how you can use a custom Theme.Dialog theme to make an activity to looks like a customized dialog,here with an ugly frame." />
</LinearLayout>
2.新建CustomDialogActivity类继承activity
public class CustomDialogActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_dialog);
}
}
3.在drawable目录下新建 filled_box.xml,根节点(root element)选择shape
<?xml version="1.0" encoding="utf-8"?>
<!-- 定义一个矩形,背景颜色为#f0600000,边框宽3dp,颜色为#ffff8080,圆角弧度为3dp,内边距为10
用来作DialogActivity样式的填充背景 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#f0600000"/>
<stroke android:width="3dp" android:color="#ffff8080"/>
<corners android:radius="3dp"/>
<padding android:left="10dp" android:right="10dp"
android:top="10dp" android:bottom="10dp"/>
</shape>
4.在styles中添加样式,设定该样式继承系统的Theme.Dialog,背景用我们刚才设置
好的图形filled_box填充
<style name="CustomDialogTheme" parent="android:style/Theme.Dialog">
<item name="android:windowBackground">@drawable/filled_box</item>
</style>
5.在配置文件中为CustomDialogActivity引入样式
<activity
android:name="com.example.apidemos.app.activity.CustomDialogActivity"
android:label="@string/activity_custom_dialog"
android:theme="@style/CustomDialogTheme" >
<intent-filter >
<action android:name="android.intent.action.MAIN"/>
<category android:name="COM_FISHTOSKY_CODE"/>
</intent-filter>
</activity>