如何使用 GridLayout 创建对话框?
How to create dialog with GridLayout?
如何创建对话框,它使用 GridLayout 并且当用户单击此布局的项目然后单击 "choose" 按钮时。 GridLayout 项由一个 ImageView 组成。如何实现这个Dialog?
1 - 制作您想要的自定义布局
2 - 使 myDialog class 扩展 DialogFragment 并使其膨胀您制作的布局
3-在片段中添加你想要的功能
但是我用的是 gridview ,gridlayout 比较简单但是我建议用 gridview
这里是对话框class
public class myDialog extends DialogFragment implements dis_listener {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.my_dialog_layout,container,false);
GridView gv = view.findViewById(R.id.dialog_grid);
grid_adapt adapt = new grid_adapt(getActivity(),this);
gv.setAdapter(adapt);
return view;
}
@Override
public void listen() {
this.dismiss();
}
}
grid_adapt :-
public class grid_adapt extends BaseAdapter {
private Context cxt;
//pass the data you want
//private ArrayList<Integers> imgs
private dis_listener img_dismiss;
grid_adapt(Context context,dis_listener dismisser){
this.cxt = context;
this.img_dismiss = dismisser;
}
@Override
public int getCount() {
//return the data length
//return imgs.length
return 3;
}
@Override
public Object getItem(int position) {
//return imgs.get(position);
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
viewHolder vh;
if(convertView == null) {
convertView= LayoutInflater.from(cxt).inflate(R.layout.grid_item, parent, false);
vh = new viewHolder(convertView);
convertView.setTag(vh);
}else{
vh = (viewHolder) convertView.getTag();
}
vh.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(cxt,"Open",Toast.LENGTH_LONG).show();
}
});
vh.img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
img_dismiss.listen();
}
});
return convertView;
}
static class viewHolder{
private Button button;
private ImageView img;
viewHolder(View view){
button = view.findViewById(R.id.dialog_item_button);
img = view.findViewById(R.id.img);
}
}
}
接口只有一个方法叫listen
结果:
GridView gridView = new GridView(this);
gridView.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, your_list));
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// do something here
}
});
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(gridView);
builder.setTitle("ALERT BOX WITH GRID");
builder.show();
试试这个,这个基于单列,数据网格..
如果你想要图片,请关注这个,
https://android-developers.googleblog.com/2012/05/using-dialogfragments.html
如何创建对话框,它使用 GridLayout 并且当用户单击此布局的项目然后单击 "choose" 按钮时。 GridLayout 项由一个 ImageView 组成。如何实现这个Dialog?
1 - 制作您想要的自定义布局
2 - 使 myDialog class 扩展 DialogFragment 并使其膨胀您制作的布局
3-在片段中添加你想要的功能
但是我用的是 gridview ,gridlayout 比较简单但是我建议用 gridview
这里是对话框class
public class myDialog extends DialogFragment implements dis_listener {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.my_dialog_layout,container,false);
GridView gv = view.findViewById(R.id.dialog_grid);
grid_adapt adapt = new grid_adapt(getActivity(),this);
gv.setAdapter(adapt);
return view;
}
@Override
public void listen() {
this.dismiss();
}
}
grid_adapt :-
public class grid_adapt extends BaseAdapter {
private Context cxt;
//pass the data you want
//private ArrayList<Integers> imgs
private dis_listener img_dismiss;
grid_adapt(Context context,dis_listener dismisser){
this.cxt = context;
this.img_dismiss = dismisser;
}
@Override
public int getCount() {
//return the data length
//return imgs.length
return 3;
}
@Override
public Object getItem(int position) {
//return imgs.get(position);
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
viewHolder vh;
if(convertView == null) {
convertView= LayoutInflater.from(cxt).inflate(R.layout.grid_item, parent, false);
vh = new viewHolder(convertView);
convertView.setTag(vh);
}else{
vh = (viewHolder) convertView.getTag();
}
vh.button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(cxt,"Open",Toast.LENGTH_LONG).show();
}
});
vh.img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
img_dismiss.listen();
}
});
return convertView;
}
static class viewHolder{
private Button button;
private ImageView img;
viewHolder(View view){
button = view.findViewById(R.id.dialog_item_button);
img = view.findViewById(R.id.img);
}
}
}
接口只有一个方法叫listen
结果:
GridView gridView = new GridView(this);
gridView.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, your_list));
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// do something here
}
});
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(gridView);
builder.setTitle("ALERT BOX WITH GRID");
builder.show();
试试这个,这个基于单列,数据网格..
如果你想要图片,请关注这个, https://android-developers.googleblog.com/2012/05/using-dialogfragments.html