android自定义对话框
我们在android应用程序开发的过程中,避免不了在界面和功能上的一些特殊处理,今天带来的是在对话框上的自定义实现,首先你需要定义好符合你需求的对话框布局文件,然后新建一个类,并继承自Dialog类,这样你就可以实现属于你自己风格的对话框了,在Oncreate方法中通过setContentView来设置视图布局,然后可以通过findViewById来找到布局文件中的组建并做相应的动作处理,下面直接上效果图:
对话框顶部标题xml布局
<?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="wrap_content"
android:orientation="horizontal"
android:background="#15adff"
android:padding="5.0dp"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/common_create_note"
/>
</LinearLayout>
Xml布局文件:
<?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="wrap_content"
android:orientation="vertical"
android:background="#fff"
>
<!—-对话框布局的标题布局-->
<include
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/layout_context_menu" />
<!—-编辑框-->
<EditText
android:id="@+id/ET_add_kind_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5.0dp"
android:layout_marginRight="5.0dp"
android:layout_marginTop="5.0dp"
android:ellipsize="end"
android:hint="@string/add_kind_hint_text"
android:maxWidth="150.0dp"
android:singleLine="true" />
<!—-编辑框-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5.0dp"
android:layout_marginRight="5.0dp"
>
<!—-添加按钮-->
<Button
android:id="@+id/B_add_kind"
android:layout_width="80.0dp"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_weight="1"
android:background="@drawable/selector_button_kind_activity"
android:text="@string/add_note_kind_text"
android:textColor="#fff"
/>
<!—-重填按钮-->
<Button
android:id="@+id/B_reset_kind"
android:layout_width="80.0dp"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:layout_marginLeft="30.0dp"
android:background="@drawable/selector_button_kind_activity"
android:text="@string/reset_note_kind_text"
android:textColor="#fff"
/>
<!—-取消按钮-->
<Button
android:id="@+id/B_cancel_kind"
android:layout_width="80.0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_gravity="right"
android:layout_marginLeft="30.0dp"
android:background="@drawable/selector_button_kind_activity"
android:text="@string/cancle_note_kind_text"
android:textColor="#fff"
/>
</LinearLayout>
</LinearLayout>
Java代码:
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.EditText;
/**
* 自定义的alertdialog,用于添加笔记种类按钮的弹出窗口
* @author luofu
*
*/
public class AddKindDialog extends Dialog
{
private Button mDialogAddButton;
private Button mDialogResetButton;
private Button mDialogCancleButton;
private EditText mDialogKindEdit;
public AddKindDialog(Context context)
{
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
// TODO Auto-generated method stub
//设置对话框不显示标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_add_kind_dialog);
initView();
}
//初始化对话框视图
private void initView()
{
mDialogAddButton = (Button)findViewById(R.id.B_add_kind);
mDialogCancleButton = (Button)findViewById(R.id.B_cancel_kind);
mDialogResetButton = (Button)findViewById(R.id.B_reset_kind);
mDialogKindEdit = (EditText)findViewById(R.id.ET_add_kind_text);
setButtonClickListener();
}
/**
* 设置各按钮的点击事件
*/
private void setButtonClickListener()
{
mDialogAddButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
//添加按钮的相应操作
}
});
mDialogCancleButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
//退出对话框
dismiss();
}
});
mDialogResetButton.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
//对编辑框进行操作
mDialogKindEdit.setText("");
}
});
}
}