本次文章的代码内容是通过通过设置布局实现自定义对话框,每天或者后天更新Android对话框的实现方法(下)之通过调用接口的方法来实现(该方法相对与上一中方法更有效率同时难度相对比较大一点点)下面是代码内容:
在activity_main.xml设置两个按钮,按钮的名字就是该实现的方法,第一个按钮的功能就是本次内容的实现方法,第二个按钮功能的实现用到的会是另外一种方法,这样在一个程序用两种对话框定义设置的实现方法可以让知识更加多积累有点,了解不同的Android代码的知识点!
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="通过设置布局实现自定义对话框"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="完全自定义对话框"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btn"
app:layout_constraintVertical_bias="0.0" />
</androidx.constraintlayout.widget.ConstraintLayout>
在建立雨果layout_dialog.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="240dp"
android:background="@color/colorGreen"
android:orientation="vertical">
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="***提示***"
android:textSize="28sp"
android:gravity="center"
android:textColor="@color/colorPrimaryDark"
android:layout_marginTop="10dp"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/colorPrimaryDark"/>
<TextView
android:id="@+id/tv_message"
android:layout_width="match_parent"
android:layout_height="100dp"
android:text="你确定要退出当前应用吗?"
android:textSize="18sp"
android:gravity="center"
/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/colorPrimaryDark"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_cancle"
android:layout_width="140dp"
android:layout_height="wrap_content"
android:text="取消"
android:background="#aaa"
android:layout_marginTop="10dp"
android:layout_marginLeft="20dp"
/>
<Button
android:id="@+id/btn_ok"
android:layout_width="140dp"
android:layout_height="wrap_content"
android:text="确定"
android:background="@color/colorPrimary"
android:layout_marginTop="10dp"
android:layout_marginLeft="90dp"
/>
</LinearLayout>
</LinearLayout>
在MainActivity,java放置对话框的各个属性的设置以及对layout_dialog.xml界面的调用
package com.example.myapplication;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = this.findViewById(R.id.btn);
btn.setOnClickListener(this);
Button btn2 = this.findViewById(R.id.btn1);
btn2.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btn:
createDialogbyLayout();
break;
case R.id.btn1:
createDialogbyCustomDialog();
break;
}
}
//该方法本次没有用到,每天会用到
private void createDialogbyCustomDialog() {
CustomDialog dialog =new CustomDialog(this);
dialog.setOnClickBottomListener(new CustomDialog.OnClickBottomListener() {
@Override
public void onPositiveClick() {
}
@Override
public void onNegativeClick() {
}
});
}
private void createDialogbyLayout() {
//1.创建构建器
AlertDialog.Builder builder = new AlertDialog.Builder(this);
//2.获得布局
View view_dialog = View.inflate(this,R.layout.layout_dialog,null);
builder.setView(view_dialog);
//3.创建对话框
final AlertDialog dialog = builder.create();
//4.设置自定义对话框的按钮事件
Button btnCancle = view_dialog.findViewById(R.id.btn_cancle);
Button btnOK = view_dialog.findViewById(R.id.btn_ok);
btnCancle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
btnOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MainActivity.this.finish();
dialog.dismiss();
}
});
dialog.show();
}
}