Android显示表情对话框

本文介绍了一个使用Android GridView展示图片并允许用户点击选择特定图片的方法。通过自定义Adapter填充GridView,并在用户点击图片后,利用Html.fromHtml将所选图片以HTML格式插入到EditText中。
摘要由CSDN通过智能技术生成
final EditText editface=(EditText) this.findViewById(R.id.EditText);
List<Map<String,Object>> list=getGridData();
        GridView grid=(GridView) View.inflate(this,R.layout.pop, null).findViewById(R.id.gridview);;
        grid.setAdapter(new MyAdapter(this, list));
        final Dialog dialog=new Dialog(this, R.style.FullScreenDialog);
        dialog.setContentView(grid);

                dialog.show();


grid.setOnItemClickListener(new OnItemClickListener() 
        {
            public void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) 
            {
                String html="<img src="+list.get(position).get("name")+" />";
                
                CharSequence Text=Html.fromHtml(html, new ImageGetter() 
                {
                    public Drawable getDrawable(String source) 
                    {
                        Drawable drawable=getResources().getDrawable(getResourceID(source));
                        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
                        return drawable;
                    }
                }, null);
                
               
                dialog.dismiss();
               
                editface.append(Text);
            }
        });



    //根据资源的名字找到他的Id号
    public int getResourceID(String name)
    {
        System.out.println(name);
        try 
        {
            Field field=R.drawable.class.getField(name);
            
            return Integer.valueOf(field.getInt(name));
        } catch (Exception e)
        {
            e.printStackTrace();
        }
        return 0;
        
    }

    public List<Map<String,Object>> getGridData()
    {
        List<Map<String,Object>> list=new ArrayList<Map<String,Object>>(); 
        try 
        {
            Field[] field=R.drawable.class.getFields();
            for(Field f:field)
            {
                
                    if(f.getName().indexOf("f0")!=-1)
                    {
                        Map<String, Object> map=new HashMap<String,Object>();
                        int id=f.getInt(R.drawable.class);
                        map.put("image", id);
                        //src中的图片的名字必须在drawable中存在该图片
                        map.put("name", f.getName().toString());
                        list.add(map);
                    }
                
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }

 效果图:

转载于:https://www.cnblogs.com/tianshidechibang234/p/3260351.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值