我想在点击时全屏显示 recyclerview图像并在下方显示一个按钮,如此xml文件所示
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Select"
android:id="@+id/profileButton"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fullscreenView"
android:layout_above="@+id/profileButton"
/>
</RelativeLayout>
这是我到目前为止的图像适配器
public class ImageAdapter extends
RecyclerView.Adapter<ImageAdapter.ViewHolder>
{
private File imagesFile;
public ImageAdapter(File folderFile)
{
imagesFile = folderFile;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.gallery_images_relative_layout,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position)
{
File imageFile = imagesFile.listFiles()[position];
Bitmap imageBitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath());
holder.getImageView().setImageBitmap(imageBitmap);
}
@Override
public int getItemCount()
{
if(MainActivity.checkIfGalleryEmpty(imagesFile)==true)
return 0;
else
return imagesFile.listFiles().length;
}
public static class ViewHolder extends RecyclerView.ViewHolder
{
private ImageView imageView;
public ViewHolder(View view)
{
super(view);
imageView = (ImageView) view.findViewById(R.id.imageGalleryView);
}
public ImageView getImageView()
{
return imageView;
}
}
}
我不确定将onClickListener
方法放在哪里(应该在这里还是在我的主要方面?)或者如何实现显示图像较大的onClickListener
。此外,显示的按钮必须执行一个功能,因此也可能在另一个活动文件中有一个onClicklistener
。如果您有任何关于如何实现这一点的提示或建议,请考虑我的框架,请告诉我。如果有帮助的话,我也愿意发布我MainActivity
文件的部分内容。
答案 0 :(得分:0)
在ImageAdapter类中创建一个接口
public interface Callback {
void onImageClicked(string imagePath);
}
然后添加构造函数
Callback mCallback;
public ImageAdapter(File folderFile, Callback callback)
{
imagesFile = folderFile;
mCallback = callback;
}
然后在您调用ImageAdapter的Activity / Fragment中,传递回调并实现回调方法,设置适配器将与您使用的相同
ImageAdapter adapter = ImageAdapter(folderFile, this);
实现回调方法后,您将在activity / fragment
中找到一个方法@Override
public void onImageClicked(string imagePath) {
//Here you can do anything with the clicked image (Show the full screen image)
}
然后,从适配器,您可以将imagePath传递给回调
中的活动holder.getImageView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mCallback!=null){
mCallback.onImageClicked(imageFile.getAbsolutePath());
}
}
});
根据我的理解,你的问题是如何调用onClick方法。如果您对如何显示全屏图像有疑问,可以使用全屏图像视图创建另一个活动并设置图像。
答案 1 :(得分:0)
您可以在recyclerview视图中启用点击图片视图,在onclick上将文件路径传递到下一个活动,您可以使用ImageView
完整设置此图像位图
public static class ViewHolder extends RecyclerView.ViewHolder
{
private ImageView imageView;
public ViewHolder(View view)
{
super(view);
ImageView imageView = (ImageView) view.findViewById(R.id.imageGalleryView);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
File imageFile = imagesFile.listFiles()[getAdapterPosition()];
Intent intent = new Intent(context,FullScreenActivity.class);
intent.putExtra("filepath",imageFile.getAbsolutePath());
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
}
public ImageView getImageView()
{
return imageView;
}
}
同样在适配器类中,将context
传递给构造函数
public ImageAdapter(File folderFile,Context context)
{
imagesFile = folderFile;
mContext = context;
}
答案 2 :(得分:0)
在浏览器中注册onclick,如下所示:
public static class ViewHolder extends RecyclerView.ViewHolder
{
private ImageView imageView;
public ViewHolder(View view)
{
super(view);
ImageView imageView = (ImageView) view.findViewById(R.id.imageGalleryView);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
//TODO: Zooming a View
}
});
}
public ImageView getImageView()
{
return imageView;
}
}
使用缩放视图显示全尺寸图像。
Developer site for display fullsize image
希望这可以帮助你。