我正在创建一个具有此布局的自定义对话框(标题包含图像,文本,2个按钮):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:background="@color/white">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="30dip"
android:paddingTop="10dip">
<ImageView
android:id="@+id/dialog_title_image"
android:layout_alignParentLeft="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/info"/>
<TextView
android:id="@+id/dialog_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dip"
android:layout_centerInParent="true"
android:text="Title"
android:layout_toRightOf="@id/dialog_title_image"
android:textColor="@color/black"
android:textSize="30sp"/>
</RelativeLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="2dip"
android:background="@color/header_grep"
android:layout_marginTop="5dip"/>
<TextView
android:id="@+id/dialog_msg"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/dark_gray"
android:layout_marginTop="10dip"
android:layout_marginLeft="10dip"/>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="10dip"
android:gravity="bottom|center_horizontal"
android:paddingBottom="5dip">
<Button
android:id="@+id/positive_button"
android:layout_alignParentLeft="true"
android:layout_width="100dip"
android:layout_height="wrap_content"
style="@style/Gradient"
android:text="Si"/>
<Button
android:id="@+id/negative_button"
android:layout_width="100dip"
style="@style/Gradient"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/positive_button"
android:text="No"/>
</RelativeLayout>
</LinearLayout>
这是CustomDialog.java
public class CustomDialog extends Dialog {
Context context;
public CustomDialog(Context context) {
super(context);
// TODO Auto-generated constructor stub
this.context = context;
}
public CustomDialog(Context context, int theme) {
super(context, theme);
// TODO Auto-generated constructor stub
this.context = context;
}
public CustomDialog(Context context, boolean cancelable,
OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
// TODO Auto-generated constructor stub
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.setContentView(R.layout.custom_dialog);
}
}
这是我实施的方法来展示它:
private void showDialog(String msg, String title)
{
final Dialog dialog = new CustomDialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.custom_dialog);
TextView title_dialog = (TextView) dialog.findViewById (R.id.dialog_title);
title_dialog.setText(title);
TextView text = (TextView) dialog.findViewById(R.id.dialog_msg);
text.setText(msg);
Button positiveButton = (Button) dialog.findViewById(R.id.positive_button);
Button negativeButton = (Button) dialog.findViewById(R.id.negative_button);
positiveButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
finish();
}
});
negativeButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
dialog.dismiss();
}
});
dialog.show();
}
当我启动应用程序并显示对话框时,标题和文本是在xml文件中定义的那些(所以'标题',对话框的主体没有任何内容)如果我点击按钮没有任何反应。 谁能帮我?提前谢谢。
答案 0 :(得分:1)
您必须在Dialog上传递Application上下文。如果您将此作为上下文传递,并且您从按钮onclick()事件调用customdialog,那么它将此作为按钮onclicklistner()对象引用,这是错误的。所以你必须通过你的活动或你的申请背景。
final Dialog dialog = new CustomDialog(yourappliactioncontext);
答案 1 :(得分:0)
尝试一下:
final Dialog dialog = new Dialog(YourActivity.this);
而不是
final Dialog dialog = new Dialog(context);
如果要重用此代码,作为可重用组件或在多个位置创建对话框的机制,请创建基本活动类并在其中使用此方法,并根据需要在子类活动中使用它。