- 我正在从
Firebase Realtime Database
中获取text
和imageUrl
。我想先显示image
,然后在AlertDialogBox
中显示text
。 - 我能够获取
text
和imageUrl
。能够使用setTitle()
设置文本,但当试图显示image
时,无法实现。 - 提到这个,但是他们使用的是
drawable
或static 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();
}
}
了解更多关于自定义对话框-官方文档