目标:
自定义android alertdialog对话框的布局文件,利用shape来实现。
activity的CusAlertDiaglogForXml的代码如下:
public class CusAlertDiaglogForXml extends Activity {
private Button cus_alert_dialog01_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cus_alert_diaglog);
cus_alert_dialog01_btn = (Button) findViewById(R.id.cus_alert_dialog01_btn);
cus_alert_dialog01_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//自定义alertdialog的布局文件
final AlertDialog cus_alertdialog01 = new AlertDialog.Builder(
CusAlertDiaglogForXml.this).create();
cus_alertdialog01.show();
cus_alertdialog01.setCancelable(false);
cus_alertdialog01.getWindow().setContentView(
R.layout.cus_alertdiaglog_01_model);
//修改alertdialog的标题和显示内容
TextView alert_01_title = (TextView) cus_alertdialog01
.getWindow().findViewById(R.id.alert_01_title);
alert_01_title.setText("提示信息标题");
TextView alert_01_content = (TextView) cus_alertdialog01
.getWindow().findViewById(R.id.alert_01_content);
alert_01_content.setText("这里是显示内容,按确定或取消按钮此警示框消失!");
//添加按钮的处理事件
cus_alertdialog01.getWindow().findViewById(R.id.alert_01_yes)
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
cus_alertdialog01.dismiss();
}
});
cus_alertdialog01.getWindow().findViewById(R.id.alert_01_no)
.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
cus_alertdialog01.dismiss();
}
});
}
});
}
}
activity的布局文件cus_alert_diaglog.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="通过XML自定义的alertdialog"
android:id="@+id/cus_alert_dialog01_btn"/>"
</LinearLayout>
alertdialog的布局文件CusAlertDiaglogForXml.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center_vertical"
android:orientation="vertical" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/table_frame_gray"
android:orientation="vertical" >
<TextView
android:id="@+id/alert_01_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="12dip"
android:gravity="center"
android:textSize="16sp"
android:text="警示" />
<TextView
android:layout_width="match_parent"
android:layout_height="1dip"
android:background="#4400ff00" />
<TextView
android:id="@+id/alert_01_content"
android:layout_gravity="center"
android:layout_width="280sp"
android:layout_height="wrap_content"
android:layout_marginTop="12dip"
android:layout_marginBottom="12dip"
android:padding="8dip"
android:textSize="12sp"
android:text="警示内容" />
<TextView
android:layout_width="match_parent"
android:layout_height="1dip"
android:background="#4400ff00" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal" >
<Button
android:id="@+id/alert_01_yes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_style"
android:layout_marginLeft="14dip"
android:layout_marginRight="14dip"
android:layout_marginTop="12dip"
android:layout_marginBottom="14dip"
android:text="确定"
android:textSize="12sp" />
<Button
android:id="@+id/alert_01_no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_style"
android:layout_marginLeft="14dip"
android:layout_marginRight="14dip"
android:layout_marginTop="12dip"
android:layout_marginBottom="14dip"
android:text="取消"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
alertdialog的linearylayout的样式文件table_frame_gray.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<gradient android:startColor="#ffffff" android:endColor="#e7f38c"
android:angle="180" />
<stroke android:width="1.5dip" android:color="#1b8c4b" />
<corners android:radius="12dip"/>
</shape>
按钮使用的样式文件button_style.xml.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<gradient android:startColor="#220d76e1" android:endColor="#220d76e1"
android:angle="270" />
<stroke android:width="1dip" android:color="#f403c9" />
<corners android:radius="8dip" />
<padding android:left="4dp" android:top="4dp"
android:right="4dp" android:bottom="4dp" />
</shape>
</item>
<item android:state_focused="true">
<shape>
<gradient android:startColor="#22ffc2b7" android:endColor="#22ffc2b7"
android:angle="270" />
<stroke android:width="1dip" android:color="#f403c9" />
<corners android:radius="8dip" />
<padding android:left="4dp" android:top="4dp"
android:right="4dp" android:bottom="4dp" />
</shape>
</item>
<item>
<shape>
<gradient android:startColor="#ffffff" android:endColor="#e7f38c"
android:angle="180" />
<stroke android:width="1dip" android:color="#1b8c4b" />
<corners android:radius="8dip" />
<padding android:left="4dp" android:top="4dp"
android:right="4dp" android:bottom="4dp" />
</shape>
</item>
</selector>
最后的效果如下: