如何在AlterDialog框中设置ImageView


  • 我正在从Firebase Realtime Database中获取textimageUrl。我想先显示image,然后在AlertDialogBox中显示text
  • 我能够获取textimageUrl。能够使用setTitle()设置文本,但当试图显示image时,无法实现。
  • 提到这个,但是他们使用的是drawablestatic images
ImageView imageView = new ImageView(context);
imageView.setImageResource(R.mipmap.ic_launcher);
AlertDialog dialog = new AlertDialog.Builder(context)
.setView(imageView)
.setPositiveButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).create();
dialog.show();
  • 或者只是Text使用下面的代码
AlertDialog.Builder builder = new AlertDialog.Builder(context,R.style.CustomDialogTheme);
builder.setTitle("Explanation");
builder.setMessage(list.get(position).getExplaination());
url = list.get(position).getImageUrl();
Log.i("URL", url);
builder.setNegativeButton("Close", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// dismiss dialog
dialogInterface.dismiss();
}
});
builder.show();
  • 我也创建了一个CustomDialogBox视图,但无法理解如何将文本和imageUrl值传递给特定的AlertDialogBox.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".CustomDialog">
<ImageView
android:id="@+id/eImageView"
android:layout_width="300dp"
android:layout_height="200dp"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginTop="30dp"
android:layout_marginRight="10dp"/>
<TextView
android:id="@+id/eTextView"
android:layout_width="150dp"
android:layout_height="300dp"
android:layout_margin="8dp"
android:gravity="center"
android:padding="20dp"
android:text=""
android:textColor="#000000"
android:translationX="120dp"
android:translationY="10dp"
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>

设置需要从CustomDialog获取ImageView id的图像XML文件,然后你可以设置特定的图像到ImageView。

因此,首先,使用getLayoutInflater()获取您的自定义视图。

注意:根据您的需要使用以下任意一种:

View view = getLayoutInflater().inflate(R.layout.CustomDialog, null); // for activity
View view = ((ViewHolder) holder).mainActivity.getLayoutInflater().inflate(R.layout.CustomDialog, null); // for adapter class
View view = getActivity().getLayoutInflater().inflate(R.layout.CustomDialog, null); // for fragment

然后将view添加到builder.setView();

builder.setView(view);

但是,您还需要获得位于CustomDialog中的所有视图的ID。XML文件。

TextView textview = view.findViewById(R.id.eTextView);
ImageView imageview = view.findViewById(R.id.eImageView);
现在,你可以将你的图像设置为ImageView使用滑翔依赖。
Glide.with(context).load(url).into(imageview);

完整的示例:

View view = getLayoutInflater().inflate(R.layout.CustomDialog, null);
ImageView imageview = view.findViewById(R.id.eImageView);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Explanation");
builder.setView(view);
builder.setMessage(list.get(position).getExplaination());
url = list.get(position).getImageUrl();
Glide.with(context).load(url).into(imageview);
Log.i("URL", url);
builder.setNegativeButton("Close", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
// dismiss dialog
dialogInterface.dismiss();
}
});
builder.show();

你不能直接在Imageview中设置URL你必须使用这些库

滑翔毕加索

滑翔示例:

Glide.with(context).load(your_url).into(imageview);
示例:
Picasso.get().load(your_url).into(imageview);

您可以使用Dialog类。我正在写下面的代码

Dialog dialog = new Dialog(context);
dialog.setCancelable(true);
ImageView imageView = dialog.findViewById(imageView); 
TextView textView = dialog.findViewById(textView); 
dialog.show();
dialog.getWindow().setBackgroundDrawable(new 
ColorDrawable(context.getResources().getColor(android.R.color.transparent)));

我还创建了一个CustomDialogBox视图,但我不能够理解我应该如何传递文本和imageUrl值到特定的AlertDialogBox。

创建自定义对话框类时,为文本和图像url设置带有参数的承包商。在视图中使用这个文本和imgUrl。使用Picasso或Glide从在线URL加载图像。

/*** On Activity class when you show your custom Dialog Box ****/
//Pass the text and img URL to your Custome Dialog constructor while create an instance
DialogFragment dialogBox= new CustomDialogBox(text, ImgUrl); 
dialogBox.show(getSupportFragmentManager(), "custom_dialog_tag");
// Custom DialogBox Class
public class CustomDialogBox extends DialogFragment{
private String text;
private String imgUrl;

//Constructor to receive argument from Activity    
public CustomDialogBox (String text, String imgUrl) {
this.text = text;
this.imgUrl= imgUrl;
}
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
// Get the layout inflater
View view = getLayoutInflater().inflate(R.layout.custom_dialog, null); // for activity

// Inflate and set the layout for the dialog
builder.setView(view)
TextView textView = view.findViewById(R.id.yourTextView);
ImageView imgView= view.findViewById(R.id.yourImgView);
// View online img with glide library
Glide.with(context).load(imgUrl).into(imgView); 
return builder.create();
}
}

了解更多关于自定义对话框-官方文档

最新更新