Java 自定义确认android对话框不工作
我正在学习android,我需要创建一个全局自定义的android确认对话框,用于整个应用程序,但不起作用。首先,应用程序的UI看起来像这样 按钮看起来很小,不知道我做错了什么。 这是我的布局xmlJava 自定义确认android对话框不工作,java,android,Java,Android,我正在学习android,我需要创建一个全局自定义的android确认对话框,用于整个应用程序,但不起作用。首先,应用程序的UI看起来像这样 按钮看起来很小,不知道我做错了什么。 这是我的布局xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&
<?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:layout_marginRight="25dip"
android:layout_marginLeft="25dip"
android:background="@drawable/alert_bg">
<TextView
android:textColor="@color/colorStandardBlack"
android:gravity="center"
android:layout_marginTop="10dp"
android:textSize="18sp"
android:textAllCaps="true"
android:textStyle="bold"
android:id="@+id/text_view_confirm"
android:text="@string/confirm"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:orientation="vertical"
android:id="@+id/liner_confirm"
android:background="@color/chrome_bg"
android:layout_marginTop="8dp"
android:layout_width="match_parent"
android:layout_height="1dp"/>
<TextView
android:textColor="@color/colorStandardBlack"
android:gravity="center"
android:layout_marginTop="10dp"
android:textSize="18sp"
android:id="@+id/text_view_confirm_message"
android:text="Lorem ipskljsdf kfjsda fkdlsja fs fdsfdsfsdfsdfsdf fsfsdfsdffdf sfsdf fksjffska fdjslkfjsdlfjslfjsdkl fksdfjklsdjfklsd"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_width="match_parent"
android:gravity="center"
android:layout_height="100dp">
<Button
style="@style/Button_With_Radius"
android:background="#fdcb6e"
android:textColor="@color/white"
android:layout_width="120dp"
android:text="@string/cancel"
android:id="@+id/button_cancel"
android:textAllCaps="true"
android:layout_height="wrap_content" />
<Button
style="@style/Button_With_Radius"
android:background="#0984e3"
android:layout_marginLeft="35dp"
android:textColor="@color/white"
android:text="@string/confirm"
android:textAllCaps="true"
android:id="@+id/button_confirm"
android:layout_width="120dp"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
下面是我如何使用我的自定义对话框
boolean yes=AppUtil.confirmation(这是“您确定要这样做吗?”);
Toast.makeText(这个“+”是,Toast.LENGTH_SHORT.show()//这总是返回false
下面是警报bg xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#fff" />
<corners
android:bottomLeftRadius="15dp"
android:bottomRightRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp" />
</shape>
我尝试了你的代码,我没有遇到按钮大小的问题: 请尝试使用接口获取响应: 希望这个链接能帮助你 如果得到任何问题回复给我,我会解释的 使用以下颜色代码: 并将背景颜色更改为以下颜色:
<color name="purple">#FF6200EE</color>
<color name="teal">#FF018786</color>
<color name="black">#FF000000</color>
创建另一个名为ConfirmDialog.java的类,该类应实现click侦听器:
public class ConfirmDialog extends Dialog implements
android.view.View.OnClickListener {
}
现在,在此类中添加以下代码:
public class ConfirmDialog extends Dialog implements
android.view.View.OnClickListener {
public Activity activity;
private DialogClickListener listener;
public Button yes, no;
public ConfirmDialog(Activity activity, DialogClickListener listener) {
super(activity);
this.activity = activity;
this.listener = listener;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.dialog_confirm);
yes = (Button) findViewById(R.id.btn_yes);
no = (Button) findViewById(R.id.btn_no);
yes.setOnClickListener(this);
no.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_yes:
listener.onPositiveButtonClick();
break;
case R.id.btn_no:
listener.onNegativeButtonClick();
break;
default:
break;
}
dismiss();
}
}
对话框布局:
<?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:padding="40dp"
android:orientation="vertical" >
<TextView
android:id="@+id/txt_dia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Please explain your action here"
android:textColor="@color/theme_blue"
android:textSize="18dp"
android:textStyle="bold"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="30dp"
android:background="@color/white"
android:orientation="horizontal" >
<Button
android:id="@+id/btn_yes"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:clickable="true"
android:layout_marginEnd="10dp"
android:text="@string/continue_text"
android:textColor="@color/white"
android:textStyle="normal" />
<Button
android:id="@+id/btn_no"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:background="@android:color/white"
android:clickable="true"
android:text="@string/cancel"
android:textColor="@color/white"
android:textStyle="normal" />
</LinearLayout>
</LinearLayout>
演示图像:
<?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:padding="40dp"
android:orientation="vertical" >
<TextView
android:id="@+id/txt_dia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Please explain your action here"
android:textColor="@color/theme_blue"
android:textSize="18dp"
android:textStyle="bold"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="30dp"
android:background="@color/white"
android:orientation="horizontal" >
<Button
android:id="@+id/btn_yes"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:clickable="true"
android:layout_marginEnd="10dp"
android:text="@string/continue_text"
android:textColor="@color/white"
android:textStyle="normal" />
<Button
android:id="@+id/btn_no"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:background="@android:color/white"
android:clickable="true"
android:text="@string/cancel"
android:textColor="@color/white"
android:textStyle="normal" />
</LinearLayout>
</LinearLayout>
完成我尝试了你的代码,我没有遇到按钮大小问题: 请尝试使用接口获取响应: 希望这个链接能帮助你 如果得到任何问题回复给我,我会解释的 使用以下颜色代码: 并将背景颜色更改为以下颜色:
<color name="purple">#FF6200EE</color>
<color name="teal">#FF018786</color>
<color name="black">#FF000000</color>
创建另一个名为ConfirmDialog.java的类,该类应实现click侦听器:
public class ConfirmDialog extends Dialog implements
android.view.View.OnClickListener {
}
现在,在此类中添加以下代码:
public class ConfirmDialog extends Dialog implements
android.view.View.OnClickListener {
public Activity activity;
private DialogClickListener listener;
public Button yes, no;
public ConfirmDialog(Activity activity, DialogClickListener listener) {
super(activity);
this.activity = activity;
this.listener = listener;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.dialog_confirm);
yes = (Button) findViewById(R.id.btn_yes);
no = (Button) findViewById(R.id.btn_no);
yes.setOnClickListener(this);
no.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_yes:
listener.onPositiveButtonClick();
break;
case R.id.btn_no:
listener.onNegativeButtonClick();
break;
default:
break;
}
dismiss();
}
}
对话框布局:
<?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:padding="40dp"
android:orientation="vertical" >
<TextView
android:id="@+id/txt_dia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Please explain your action here"
android:textColor="@color/theme_blue"
android:textSize="18dp"
android:textStyle="bold"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="30dp"
android:background="@color/white"
android:orientation="horizontal" >
<Button
android:id="@+id/btn_yes"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:clickable="true"
android:layout_marginEnd="10dp"
android:text="@string/continue_text"
android:textColor="@color/white"
android:textStyle="normal" />
<Button
android:id="@+id/btn_no"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:background="@android:color/white"
android:clickable="true"
android:text="@string/cancel"
android:textColor="@color/white"
android:textStyle="normal" />
</LinearLayout>
</LinearLayout>
演示图像:
<?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:padding="40dp"
android:orientation="vertical" >
<TextView
android:id="@+id/txt_dia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Please explain your action here"
android:textColor="@color/theme_blue"
android:textSize="18dp"
android:textStyle="bold"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="30dp"
android:background="@color/white"
android:orientation="horizontal" >
<Button
android:id="@+id/btn_yes"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:clickable="true"
android:layout_marginEnd="10dp"
android:text="@string/continue_text"
android:textColor="@color/white"
android:textStyle="normal" />
<Button
android:id="@+id/btn_no"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:background="@android:color/white"
android:clickable="true"
android:text="@string/cancel"
android:textColor="@color/white"
android:textStyle="normal" />
</LinearLayout>
</LinearLayout>
完成
}
}您能分享本网站内使用的剩余资源吗。。。我正试图找出问题所在,但他们的一些资源缺失…@hafiza你需要什么资源?警报是missing@hafiza我已经包括了我发现,首先,我没有得到按钮大小的问题,但您的实现方式是不正确的。首先你得到响应,然后你进入响应,所以每次你得到初始化的响应。你能分享剩余的资源吗,在这里面使用。。。我正试图找出问题所在,但他们的一些资源缺失…@hafiza你需要什么资源?警报是missing@hafiza我已经包括了我发现,首先,我没有得到按钮大小的问题,但您的实现方式是不正确的。首先你们得到的是响应,然后你们输入的是响应,所以每次你们得到的是初始化响应。为什么我的代码不能工作呢?我无法理解您正在测试的是哪台设备?请尝试将您的颜色更改为我将更新的颜色。我正在使用simulatorI我正在使用真实设备。如果您想使用自定义可重用对话框,请创建单独的对话框类,如果您有兴趣从我这里获得更多信息,我将在回答中添加剩余的解释。为什么我的代码不起作用?我无法理解您正在测试的是哪台设备?请尝试将您的颜色更改为我将更新的颜色。我正在使用simulatorI我正在使用真实设备。如果您想使用自定义可重用对话框,请创建单独的对话框类,如果您有兴趣从我这里获得更多信息,我将在答案中添加剩余的解释。不知道kotlin我将如何在javasure中这样做,检查我编辑的答案不知道kotlin我将如何在javasure中这样做,检查我编辑的答案
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showDialog(new OnConfirmDialogClicked() {
@Override
public void onDialogButtonClicked(Boolean isConfirmed) {
if(isConfirmed){
// write your logic
}else{
// write your logic
}
}
});
}
private void showDialog(OnConfirmDialogClicked onConfirmDialogClicked){
Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.dialog_layout);
Button btnConfirm = dialog.findViewById(R.id.btnConfirm);
Button btnCancel = dialog.findViewById(R.id.btnCancel);
btnConfirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
onConfirmDialogClicked.onDialogButtonClicked(true);
}
});
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
onConfirmDialogClicked.onDialogButtonClicked(false);
}
});
dialog.show();
}
interface OnConfirmDialogClicked{
void onDialogButtonClicked(Boolean isConfirmed);
}