如何在图像上添加 Imageview 和 Textview?

Posted

技术标签:

【中文标题】如何在图像上添加 Imageview 和 Textview?【英文标题】:How to add Imageview and Textview on Image? 【发布时间】:2015-11-28 12:03:39 【问题描述】:

我正在使用ListFragmentArrayAdapter 来显示使用以下list_view.xml 的图像视图列表

<?xml version="1.0" encoding="utf-8"?>

<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/img"
    android:layout_
    android:layout_/>

在我的Adapter.getview 中,我使用picasso 来加载图像:

@Override
public View getView(int position, View convertView, ViewGroup parent) 
 LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    if (null == convertView) 
        convertView = inflater.inflate(R.layout.list_view, parent, false);
    

    Picasso
            .with(context)
            .load("http://i.imgur.com/rFLNqWI.jpg")
            .fit()
            .into((ImageView) convertView);
    return convertView;
 

这是Fragment 类中的onActivityCreated 方法,由ListFragment 扩展:

 TestAdapter adapt = new TestAdapter(getActivity().getApplicationContext(), R.layout.list_view, pictures);
 setListAdapter(adapt);

上面的代码给了我一个listview,在那里我可以看到从picasso 库加载的图像。如何在列表视图中picasso 加载的image 上添加textimage?简而言之:

您可以在左下角看到一个文本“在此处输入文本”,在右上角看到一个图标(不完全在角落)

【问题讨论】:

【参考方案1】:

您可以实现 Picasso Transformation 获取位图,然后使用 Canvas 原语在位图顶部绘制/渲染文本并返回最终位图。

另一种方法是使用带有 3 个子视图的 RelativeLayoutImageView 延伸到其父级(RelativeLayout),因此它成为整体背景;然后是 TextView 用于您的文本,最后是另一个 ImageView 用于您的图标。

【讨论】:

能否给我链接以查看Transformationbitmap。是否可以为另一个 imageview 和 textview 提供坐标? @SnowClue - 这个答案有一个链接到转换***.com/questions/27081534/…【参考方案2】:

像这样创建 list_view.xml

<Relative layout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_>

<ImageView
    android:id="@+id/img"        
    android:layout_
    android:layout_/>

<EditText
    android:layout_
    android:layout_alignParentLeft="true"
    android:text="Type your text"
    android:layout_alignParentBottom="true"
    android:layout_margin="20dp"
    android:layout_/>

</Relative>

【讨论】:

【参考方案3】:

您可以使用 ViewHolder 设置 TextView 和 image 两者,然后与 picasso 一起使用。

这是代码 sn-p。

@Override
    public View getView(int position, View convertView, ViewGroup parent) 
        View row = convertView;
        ViewHolder holder;

        if (row == null) 
            LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);
            holder = new ViewHolder();
            holder.titleTextView = (TextView) row.findViewById(R.id.grid_item_title);
            holder.imageView = (ImageView) row.findViewById(R.id.grid_item_image);
            row.setTag(holder);
         else 
            holder = (ViewHolder) row.getTag();
        

        GridItem item = mGridData.get(position);
        holder.titleTextView.setText(html.fromHtml(item.getTitle()));

        Picasso.with(mContext).load(item.getImage()).into(holder.imageView);
        return row;
    

更多详情请参考 http://javatechig.com/android/download-and-display-image-in-android-gridview

【讨论】:

以上是关于如何在图像上添加 Imageview 和 Textview?的主要内容,如果未能解决你的问题,请参考以下文章

如何在鼠标单击上更改Imageview的图像

如何在swift上使用背景颜色将图像设置为imageview中心

如何在圆形 imageView android 上添加一个阴影和边界

在Recycler视图上添加图像视图时,Android导航抽屉动画滞后/减速

在第 3 个 imageview 上添加了 2 个 imageview 现在想要将第 3 个 imageviews 图像转换为实际图像

如何在 Final Android App 中的 WebView 上添加 Imageview