天天看点

android自定义dialog布局文件,Android自定义Dialog及其布局

实际项目开发中默认的Dialog无法满足需求,需要自定义Dialog及其布局,并响应布局中控件的事件。

上效果图:

android自定义dialog布局文件,Android自定义Dialog及其布局

自定义Dialog,LogoutDialog:

要将自定义布局传入构造函数中,才能在Activity中通过 dialog.findviewbyid 获取到控件,否则返回null。

public class LogoutDialog extends Dialog{

Context context;

public LogoutDialog(Context context) {

super(context);

this.context=context;

this.setContentView(R.layout.logout_dialog);

}

public LogoutDialog(Context context, int theme){

super(context, theme);

this.context = context;

this.setContentView(R.layout.logout_dialog);

}

[email protected]

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//this.setContentView(R.layout.logout_dialog);

}

}

自定义布局文件,logout_dialog.xml:

android:layout_width="250dp"

android:layout_height="wrap_content"

android:orientation="vertical"

android:background="@android:color/transparent"

>

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="@drawable/dialog_top_bg"

android:orientation="vertical"

android:paddingTop="10dp"

>

android:layout_width="50dp"

android:layout_height="50dp"

android:src="@drawable/pop_icon1"

android:layout_gravity="center_horizontal"

android:layout_marginBottom="10dp"

/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="是否确认注销账号"

android:layout_gravity="center_horizontal"

android:layout_marginBottom="20dp"

android:textColor="#FF3C25"

android:layout_marginLeft="20dp"

android:layout_marginRight="20dp"

/>

android:layout_width="match_parent"

android:layout_height="40dp"

android:gravity="center_vertical"

android:background="@drawable/dialog_buttom_bg"

>

android:id="@+id/back_btn_dialog"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:text="返回"

android:layout_weight="1"

android:textColor="#FFFFFF"

android:gravity="center"

/>

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:text="|"

android:textColor="#C9CACC"

android:gravity="center"

/>

android:id="@+id/submit_btn_dialog"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:text="确定"

android:layout_weight="1"

android:textColor="#FFFFFF"

android:gravity="center"

/>

两个Shape的布局,dialog_buttom_bg.xml:

>

android:bottomLeftRadius="@dimen/dialog_corners"

android:bottomRightRadius="@dimen/dialog_corners"

/>

android:startColor="#FF3E25"

android:endColor="#FF3E25"

android:centerColor="#FF3E25"

android:angle="270"

/>

dialog_top_bg.xml:

android:topLeftRadius="@dimen/dialog_corners"

android:topRightRadius="@dimen/dialog_corners"

/>

android:startColor="#ffffff"

android:endColor="#ffffff"

android:centerColor="#ffffff"

android:angle="270"

/>

自定义样式Style,来改变默认的Dialog样式。在values/styles.xml下新加样式:

@null

true

@drawable/dialog_background

true

@null

在Activity中调用:

Dialog dialog==new LogoutDialog(TempActivity.this, R.style.UpdateErrorFinishDialog);

dialog.setCanceledOnTouchOutside(false);

dialog.show();

TextView submit_btn_dialog=(TextView) dialog.findViewById(R.id.submit_btn_dialog);

TextView back_btn_dialog=(TextView) dialog.findViewById(R.id.back_btn_dialog);

submit_btn_dialog.setOnClickListener(new View.OnClickListener() {

[email protected]

public void onClick(View v) {

//Toaster.showLongToast("确定");

dialog.dismiss();

}

});

back_btn_dialog.setOnClickListener(new View.OnClickListener() {

[email protected]

public void onClick(View v) {

//Toaster.showLongToast("返回");

dialog.dismiss();

}

});

原文:http://www.cnblogs.com/Joanna-Yan/p/4438725.html