EditText添加表情



package com.kale.edittext02;

import java.lang.reflect.Field;
import java.util.Random;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ImageSpan;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends ActionBarActivity {
	 private EditText editText;  
	 private Button button; 
	    
	 @Override  
	    public void onCreate(Bundle savedInstanceState) {  
	        super.onCreate(savedInstanceState);  
	        setContentView(R.layout.activity_main);  
	        editText=(EditText)findViewById(R.id.edittext);  
	        button=(Button)findViewById(R.id.button);  
	        button.setOnClickListener(new OnClickListener() {  
	              
	            @Override  
	            public void onClick(View v) {  
	            	//产生随机数  随机数是从0开始
	                int randomId= new Random().nextInt(7);//nextInt(7)的范围是0-6
	                try {  
	                	//获取表情图片文件名  
	                    Field field=R.drawable.class.getDeclaredField("f" + randomId);  
	                    int resourceId=Integer.parseInt(field.get(null).toString());  
	                    //在Android中要显示图片信息,必须使用BitMap的对象来加载  
	                    Bitmap bitmap=BitmapFactory.decodeResource(getResources(), resourceId); 
	                    //要让图片替代指定的文字就要用ImageSpan   
	                    ImageSpan imageSpan = new ImageSpan(MainActivity.this, bitmap);  
	                    //f就是图片的前缀名  
	                    SpannableString spannableString = new SpannableString("f");
	                    //设置字体
	                    spannableString.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
	                    editText.append(spannableString);  
	                } catch (SecurityException e) {  
	                    e.printStackTrace();  
	                } catch (NoSuchFieldException e) {  
	                    e.printStackTrace();  
	                } catch (Exception e) {  
	                    e.printStackTrace();  
	                }  
	            }  
	        });  
	    }  

}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/edittext"
        android:layout_marginTop="10dp"/>
	<Button 
	    android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button"
        android:text="添加表情"/>

	<TextView
	    android:id="@+id/textview1"
	    android:layout_width="wrap_content"
	    android:layout_height="wrap_content"
	    android:text="使用android:digits属性(输入数字)" />
	
	<EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:id="@+id/edittext1"
        android:layout_margin="10dp"
        android:digits="0123456789"
        android:layout_marginTop="10dp"/>
	
	<TextView 
	    android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textview2"
        android:text="使用android:digits属性(输入26个小写字母)"/>
	<EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:id="@+id/edittext2"
        android:layout_margin="10dp"
        android:digits="abcdefghijklmnopqrstuvwxyz"
        android:layout_marginTop="10dp"/>
	
	<TextView 
	    android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textview3"
        android:text="使用android:inputType属性(输入数字)"/>
	<EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:id="@+id/edittext3"
        android:layout_margin="10dp"
        android:inputType="number|textCapCharacters"
        android:layout_marginTop="10dp"/>
	
	<TextView 
	    android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textview4"
        android:text="使用android:inputType属性(输入Email)"/>
	<EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:id="@+id/edittext4"
        android:layout_margin="10dp"
        android:inputType="textEmailAddress"
        android:layout_marginTop="10dp"/>
	
	<TextView 
	    android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textview5"
        android:text="使用android:inputType属性(输入有符号的浮点数)"/>
	<EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:id="@+id/edittext5"
        android:layout_margin="10dp"
        android:numeric="decimal|signed"
        android:layout_marginTop="10dp"/>
	
</LinearLayout>

代码:http://download.csdn.net/detail/shark0017/7623047


感谢:http://blog.csdn.net/wulianghuan/article/details/8583921

posted @   developer_Kale  阅读(386)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
网站流量统计工具
点击右上角即可分享
微信分享提示