单个Dialog 自定义布局 ,这个只能算半自定义,就是一个弹框布局插入到AlertDialog 中 使用setView 即可
代码如下
AlertDialog.Builder builder = new AlertDialog.Builder(InflateActivity.this);
View view = getLayoutInflater().inflate(R.layout.bottom__pop_item, null);
builder.setView(view);
final AlertDialog dialog = builder.create();
dialog.show();
TextView textView = view.findViewById(R.id.photo);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
Toast.makeText(InflateActivity.this, "点击了", Toast.LENGTH_SHORT).show();
}
});
}
监听事件也添加了, 布局更具自己的需求添加即可 。。。。。。。。。
假如是写一个 android 中间弹框,使用上面的代码完全没有问题。。
自定义弹框
1 先创建一个Dialog 类
public class CommDialog extends Dialog implements View.OnClickListener {
private Context context;//上下文
private int layoutResID;//布局文件id
private int[] listenedItem;//监听的控件id
public CommDialog(Context context, int layoutResID, int[] listenedItem) {
super(context);
this.context = context;
this.layoutResID = layoutResID;
this.listenedItem = listenedItem;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Window dialogWindow = getWindow();
dialogWindow.setGravity(Gravity.CENTER);
setContentView(layoutResID);
WindowManager windowManager = ((Activity) context).getWindowManager();
Display display = windowManager.getDefaultDisplay();
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.width = display.getWidth() * 4 / 5;// 设置dialog宽度为屏幕的4/5
getWindow().setAttributes(lp);
setCanceledOnTouchOutside(true);//点击外部Dialog消失
//遍历控件id添加点击注册
for (int id : listenedItem){
findViewById(id).setOnClickListener(this);
}
}
OnClickListener listener;
public void setClickListener(OnClickListener listener) {
this.listener = listener;
}
public interface OnClickListener {
void OnItemClick(CommDialog dialog, View view);
}
@Override
public void onClick(View v) {
dismiss();
listener.OnItemClick(this,v);
}
}
然后在Activity 中使用这个CommDialog的方法
public class InflateActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.inflate_activity_layout);
textView = findViewById(R.id.txt);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CommDialog dialog = new CommDialog(InflateActivity.this, R.layout.bottom__pop_item, new int[]{R.id.photo, R.id.camera, R.id.cancel});
dialog.setClickListener(new CommDialog.OnClickListener() {
@Override
public void OnItemClick(CommDialog dialog, View view) {
switch (view.getId()) {
case R.id.photo:
Toast.makeText(InflateActivity.this, "11111", Toast.LENGTH_SHORT).show();
break;
case R.id.camera:
Toast.makeText(InflateActivity.this, "22222", Toast.LENGTH_SHORT).show();
break;
case R.id.cancel:
Toast.makeText(InflateActivity.this, "33333", Toast.LENGTH_SHORT).show();
break;
}
}
});
dialog.show();
}
});
}
}
自定义呢就是 样式就自己随意写了, 需要注意的就是id的次数 使用几次,记得写几次呢。。。。。。。。
这里自定义Dialog 就结束了,。。。
下篇文章将介绍android 分屏播放知识。。