在开发中,UI总是设计出各种好看的弹框给我们,希望我们使用这些好看的弹框,制作出好看的APP界面,这里就给大家提供一种自定义弹框的方法。
- Activity的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点击弹框"/>
</LinearLayout>
- 注:这里就一个按钮,没什么好说的
- custom_dialog.xml dialog的自定义布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:text="这是标题"
android:textColor="@android:color/black"
android:textSize="16sp" />
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginTop="10dp"
android:scaleType="fitXY"
android:src="@mipmap/aaa" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:orientation="horizontal"
android:layout_marginBottom="30dp"
android:layout_marginTop="10dp">
<Button
android:id="@+id/bt_sure"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:text="确定" />
<Button
android:id="@+id/bt_cancel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_weight="1"
android:text="取消" />
</LinearLayout>
</LinearLayout>
- Activity内的写法,包括dialog构建和大小的自定义
public class MainActivity extends BaseActivity implements View.OnClickListener {
private Button button;
private AlertDialog dialog;
private Button bt_sure;
private Button bt_cancel;
@Override
protected int getContentLayoutId() {
return R.layout.activity_main;
}
@Override
protected void initWidget() {
super.initWidget();
//Activity按钮的初始化
button = findViewById(R.id.button);
//这里开始是Dialog的代码
AlertDialog.Builder builder = new AlertDialog.Builder(this);
View view = View.inflate(this, R.layout.custom_dialog, null);
//Dialog中控件的初始化
bt_sure = view.findViewById(R.id.bt_sure);
bt_cancel = view.findViewById(R.id.bt_cancel);
//点击事件可以统一在Activity中写
bt_sure.setOnClickListener(this);
bt_cancel.setOnClickListener(this);
builder.setView(view);
builder.setCancelable(true);
dialog = builder.create();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.show();
//这里开始修改dialog的尺寸
android.view.WindowManager.LayoutParams p = dialog.getWindow().getAttributes();
p.height = 900;
p.width = 700;
dialog.getWindow().setAttributes(p);
Window window = dialog.getWindow();
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bt_sure:
Toast.makeText(this,"确定",Toast.LENGTH_SHORT).show();
break;
case R.id.bt_cancel:
Toast.makeText(this,"取消",Toast.LENGTH_SHORT).show();
break;
}
}
}
这样,我们就实现了自定义弹框的目的。是不是很简单。