Android防IOS提示框
本周做项目时,Android自带的提示框太难看,这里做个防IOS的提示框:
效果图:
一,创建一个自定义的布局文件(其中,像颜色,文字,最好在values文件下创建,然后引入,这里就直接创建):
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="match_parent"
android:background="#FFFFFF"
android:orientation="vertical">
<TextView
android:id="@+id/vi_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#000000"
android:paddingTop="10dp"
android:gravity="center"
android:textSize="18sp"/>
<TextView
android:id="@+id/vi_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="30dp"
android:gravity="center"
android:textColor="@color/black"
android:paddingTop="0dp"
android:paddingBottom="10dp"
android:textSize="14sp"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#CCC"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/vi_cancel_button"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#007AFF"
android:padding="10dp"
android:textSize="16sp"
android:textStyle="bold"/>
<View
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="#CCC"/>
<TextView
android:id="@+id/vi_confirm_button"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#007AFF"
android:padding="10dp"
android:textSize="16sp"
android:textStyle="bold"/>
</LinearLayout>
</LinearLayout>
二、创建一个工具类,可能经常使用,进行封装:
DialogUtil:
public class DialogUtil {
private Context mContext;
private Activity mActivity;
private OnItemClickListener mOnItemClickListener;
public DialogUtil(Activity activity, Context context){
mActivity = activity;
mContext = context;
}
/** 定义一个接口,当用户点击按钮时,可在主页面进行逻辑操作 */
public interface OnItemClickListener{
/** 取消 */
void onItemCancelClick();
/** */
void onItemConfirmClick();
}
public void setOnItemClickListener(OnItemClickListener onItemClickListener ){
this.mOnItemClickListener=onItemClickListener;
}
/** 提示框,自定义标题,内容,按钮 */
public void dialog(String title,String content, String cancelString, String confirmString){
LayoutInflater inflater = mActivity.getLayoutInflater();
View view = inflater.inflate(R.layout.layout_dialog, null);
TextView titleView = view.findViewById(R.id.vi_title);
TextView contentVIew = view.findViewById(R.id.vi_content);
TextView cancelButtonView = view.findViewById(R.id.vi_cancel_button);
TextView confirmButtonView = view.findViewById(R.id.vi_confirm_button);
titleView.setText(title);
contentVIew.setText(content);
cancelButtonView.setText(cancelString);
confirmButtonView.setText(confirmString);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
final Dialog dialog = builder.create();
dialog.setCancelable(false);
dialog.show();
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
/** 设置宽为屏幕的0.8大小 */
lp.width = (int) (mActivity.getWindowManager().getDefaultDisplay().getWidth() * 0.8);
dialog.getWindow().setAttributes(lp);
/** 自定义布局应该在这里添加,要在dialog.show()的后面 */
dialog.getWindow().setContentView(view);
cancelButtonView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mOnItemClickListener.onItemCancelClick();
dialog.dismiss();
}
});
confirmButtonView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mOnItemClickListener.onItemConfirmClick();
dialog.dismiss();
}
});
}
}
三、测试
private void dialog(){
DialogUtil dialogUtil = new DialogUtil(MainActivity.this,MainActivity.this);
dialogUtil.dialog("提示","欢迎使用App","取消","确定");
dialogUtil.setOnItemClickListener(new DialogUtil.OnItemClickListener(){
@Override
public void onItemCancelClick() {
Log.d("onItemClick","你点击了取消");
}
@Override
public void onItemConfirmClick() {
Log.d("onItemClick","你点击了确定");
}
});
}
/** 添加一个按钮进行测试 */
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.dialog_hint:
dialog();
break;
}
}
效果:
点击取消:
点击确定: