package com.example.helloword;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.text.Editable;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ImageSpan;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.Toast; public class MainActivity extends Activity {
EditText txtEdit;
ImageSpan imageSpan;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtEdit = (EditText) findViewById(R.id.et_button);
txtEdit.setOnClickListener(textListener); imageSpan = new ImageSpan(this, R.drawable.ic_launcher);
SpannableString ss = new SpannableString("photo");
ss.setSpan(imageSpan, 0, "photo".length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
Editable editable = txtEdit.getEditableText();
int selectedIndex = txtEdit.getSelectionStart();
ss.getSpans(0, ss.length(), ImageSpan.class);
if (selectedIndex < 0)
editable.append(ss);
else
editable.insert(selectedIndex, ss);
} private OnClickListener textListener = new OnClickListener()
{
@Override
public void onClick(View v)
{ //关闭软键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(txtEdit.getWindowToken(), 0);
Spanned s = txtEdit.getText();
ImageSpan[] imageSpans = s.getSpans(0, s.length(), ImageSpan.class);
int selectionStart = txtEdit.getSelectionStart();
for (ImageSpan span : imageSpans)
{
int start = s.getSpanStart(span);
int end = s.getSpanEnd(span);
if (selectionStart >= start && selectionStart < end)//找到图片
{
Bitmap bitmap = ((BitmapDrawable) span.getDrawable()).getBitmap();
viewPicture(bitmap);
return;
}
}
//打开软键盘
imm.showSoftInput(txtEdit, 0);
}
}; private void viewPicture(Bitmap bitmap)
{
System.out.println("*******************************");
/* if (bitmap == null)
return;
//将由图片生成Uri
Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, null, null));
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "image/*");
startActivity(intent); */
}
}

给EditText中的图片加监听的更多相关文章

  1. 使用TextView/EditText应该注意的地方,监听EditText,addTextChangedListener

    http://blog.csdn.net/huichengongzi/article/details/7818676 监听 EditText 控件: addTextChangedListener(ne ...

  2. 关于JAVA中事件分发和监听机制实现的代码实例-绝对原创实用

    http://blog.csdn.net/5iasp/article/details/37054171 文章标题:关于JAVA中事件分发和监听机制实现的代码实例 文章地址: http://blog.c ...

  3. Android EditText中插入图片并响应点击事件

    EditText中插入图片基本就是两种方法: ,通过Html.fromHtml(..)来实现 [mw_shl_code=java,true]eText.append(Html.fromHtml(&qu ...

  4. Android 开发中的View事件监听机制

    在开发过程中,我们常常根据实际的需要绘制自己的应用组件,那么定制自己的监听事件,及相应的处理方法是必要的.我们都知道Android中,事件的监听是基于回调机制的,比如常用的OnClick事件,你了解它 ...

  5. vue中img图片加载中以及加载失败显示默认图片问题

    加载中默认图片:主要是onload事件监听,data中定义变量 imgSrc :require('./default.png'): <div class="per-pic" ...

  6. Unity中利用委托与监听解耦合的思路

    这篇随笔是一篇记录性的随笔,记录了从http://www.sikiedu.com/my/course/304,这门课程中学到的内容,附带了一些自己的思考. 一.单例模式的应用 首先假想一种情况,现在需 ...

  7. QT中使用Event Filter监听button事件,Release后button不见

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhenyu5211314/article/details/27201043 问题RT,在程序中我使用 ...

  8. SpringBoot 中发布ApplicationEventPublisher,监听ApplicationEvent 异步操作

    有这么一个业务场景:当用户注册后,发送邮件到其邮箱提示用户进行账号激活,且注册成功的同时需要赠送新人用户体验卡券. 业务有了,那么问题也就来了. What? 问题....问题?我听说你有问题? 来拔刀 ...

  9. Android应用中返回键的监听及处理

    MainActivity: package com.testnbackpressed;  import android.os.Bundle;  import android.view.KeyEvent ...

随机推荐

  1. 注解方式实现Spring声明式事务管理

    1.编写实体类 public class Dept { private int deptId; private String deptName; public int getDeptId() { re ...

  2. Android NDK开发(1)----- Java与C互相调用实例详解

    链接地址:http://www.cnblogs.com/lknlfy/archive/2012/03/13/2394153.html 一.概述 对于大部分应用开发者来说可能都不怎么接触到NDK,但如果 ...

  3. BZOJ 1625: [Usaco2007 Dec]宝石手镯( dp )

    最裸的01背包.... --------------------------------------------------------------------- #include<cstdio ...

  4. libuv 错误号UV_ECANCELED 的处理

    这个地方有好多的不明白,也没仔细的看懂代码,希望有牛人指点. 先记录几个issue 1. after_write recv many(>10000) ECANCELED in my write_ ...

  5. JavaScript 运动框架 Step by step

    http://blog.csdn.net/rsj217/article/details/7986905 关于offsetLeft:http://www.cnblogs.com/JackJiang/ar ...

  6. Android 学习开发笔记《Service 与 Thread 的区别 》

    很多时候,你可能会问,为什么要用 Service,而不用 Thread 呢,因为用 Thread 是很方便的,比起 Service 也方便多了,下面我详细的来解释一下. 1). Thread:Thre ...

  7. 【转】DevExpress控件安装

    原文链接: DevExpress控件安装.汉化使用教程 - 田园里的蟋蟀 学习网址: 1.DevExpress控件中文网 2.DevExpress控件中文网使用教程 3.DevExpress控件使用经 ...

  8. 设置windows密码只存在NTLM-Hash下

    修改注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa 下添加名为"NoLMHash"的DWORD值,并设置为1 ...

  9. First AngularJS !

    My first angular! <html ng-app> <head> <meta charset="utf-8"> <script ...

  10. wordpress模板制作第一课

    一套完整的WordPress模板应至少具有如下文件: style.css : CSS(样式表)文件 index.php : 主页模板 archive.php : Archive/Category模板 ...