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("");

        

      }

    });

  }

 

}

posted @ 2012-10-11 22:34  我是IT民工  阅读(1500)  评论(0编辑  收藏  举报