`
104zz
  • 浏览: 1507763 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

android EditText 添加图片表情以及在四个方向上绘制图片

阅读更多

第一步:创建SmiliesEditText类继承EditText如下:

 

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ImageSpan;
import android.util.AttributeSet;
import android.widget.EditText;

public class SmiliesEditText extends EditText {

	public SmiliesEditText(Context context) {
		super(context);
	}

	public SmiliesEditText(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
	}
	
	//在编辑框顶部添加图片
	public void setDrawableTop(Drawable top) {
		setCompoundDrawablesWithIntrinsicBounds(null, top, null, null);
	}
	//在编辑框顶部添加图片
	public void setDrawableTop(int top) {
		setCompoundDrawablesWithIntrinsicBounds(0, top, 0, 0);
	}
	//在编辑框顶部左边图片
	public void setDrawableRight(int right) {
		setCompoundDrawablesWithIntrinsicBounds(0, 0, right, 0);
	}
	//在编辑框左边添加图片
	public void setDrawableLeft(int left) {
		setCompoundDrawablesWithIntrinsicBounds(left, 0, 0, 0);
	}
	//在编辑框底部添加图片
	public void setDrawableButtom(int buttom) {
		setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, buttom);
	}

	
	@Override
	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		super.onMeasure(widthMeasureSpec, heightMeasureSpec);
	}
	//在编辑框内添加图片或者表情
	public void insertIcon(int id) {
		SpannableString ss = new SpannableString(getText().toString()
				+ "[smile]");//new一个SpannableString里面包含EditText已有内容,另外添加一个字符串[smile]用于在后面替换一个图片
		Drawable d = getResources().getDrawable(id);
		d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
		ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);//将图片实例化为一个ImageSpan型
		ss.setSpan(span, getText().length(),
				getText().length() + "[smile]".length(),
				Spannable.SPAN_INCLUSIVE_EXCLUSIVE);//将ImageSpan代替之前添加的[smile]字符串
		setText(ss);
	}
}

 第二步:设计xml如下:也可以在activity中直接new一个控件出来

 

 

<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:background="#bfbfbf"
     >


    <com.example.widget.SmiliesEditText
        android:id="@+id/edit"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:padding="@dimen/padding_medium" />

</RelativeLayout>

 第三步:编写MainActivity类作为演示控件是否实现了需要的功能

 

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;

import com.example.widget.SmiliesEditText;

public class MainActivity extends Activity {

	private SmiliesEditText edit;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        edit = (SmiliesEditText) this.findViewById(R.id.edit);
        edit.append("大家好");
        edit.setDrawableRight(R.drawable.bottle_close_frame_highlight);
        edit.insertIcon(R.drawable.e40f);
        edit.append("哈哈哈");
    }


    
}
 

第四步:运行结果如图:


 

  • 大小: 20.1 KB
分享到:
评论

相关推荐

    Android表情文字EmotionText

    本文将深入探讨如何在Android平台上处理和显示表情文字,包括基本概念、实现方式以及相关的技术难点。 一、表情文字概述 表情文字,也被称为颜文字或emoji,是通过特定字符组合或图形来表达情感或情绪的一种方式。...

    Edittext.zip

    本教程将详细讲解如何使用和自定义EditText,包括其样式、背景、光标以及添加删除按钮,并防止弹出软键盘。 一、EditText的基础使用 EditText是TextView的子类,它具有文字输入和编辑的功能。在XML布局文件中,可以...

    Android自定义控件EditText使用详解

    在本文中,我们将详细介绍Android自定义控件EditText的使用方法,包括自定义控件的分类、自定义EditText的实现步骤、attrs.xml的编写、MyEditText布局的实现、点击事件的实现等内容。 一、自定义控件的分类 ...

    Android自定义表情

    以下将详细讲解如何在Android的TextView或EditText中添加自定义表情。 一、表情资源管理 首先,你需要准备一套自定义的表情图片资源,可以是SVG矢量图或者PNG/JPEG格式的位图。这些图片需要存储在项目的res/...

    android坐标画矩形

    2. **Rect对象**: 在Android中,`Rect`类用于表示一个矩形区域,包含四个整数属性:`left`, `top`, `right`, 和 `bottom`,分别表示矩形的左边界、上边界、右边界和下边界。在画矩形时,你可以创建一个Rect对象并用...

    Android简单控件的开发及应用

    本章"Android简单控件的开发及应用"主要聚焦于Android SDK中的常见UI控件,如按钮、文本框、图像视图等,以及如何在布局文件中创建和配置这些控件,以及在代码中对它们进行事件处理。 一、基础控件介绍 1. Button...

    Android Layout样式布局

    - 用途:分别使控件在水平方向或垂直方向上居中。 - 示例:`android:layout_centerHorizontal="true" android:layout_centerVertical="true"` - **android:layout_alignParent[Top|Bottom|Left|Right]** - 用途...

    Android学习笔记四:基本视图组件:TextView

    此外,可以使用`android:drawableLeft`、`android:drawableRight`等属性在文本旁添加图片,实现图文混排。 除了基本属性,TextView还提供了丰富的API接口。例如,可以使用`setText()`方法动态改变文本内容,`...

    Android定制控件:带图标有颜色TextView、可编辑文本框

    这里可能需要用到setCompoundDrawablesWithIntrinsicBounds()方法来设置左右或上下四个方向的复合图形(包括图标)。同时,需要处理触摸事件,确保用户可以在文本框内正常输入。 至于全屏背景图片,这涉及到...

    android开发揭秘PDF

    2.3 创建第一个Android项目——HeUoAndroid 2.3.1 创建HelloAndroid项目 2.3.2 运行HelloAndroid及模拟器的使用 2.3.3 调试HelloAndroid 2.4 小结 第二部分 基础篇 第3章 Android程序设计基础 3.1 Android程序框架 ...

    Android开发笔记——UI基础编程

    Android中的布局管理器包括LinearLayout、RelativeLayout、FrameLayout、GridLayout和ConstraintLayout等,它们决定了UI组件在屏幕上的排列方式。 1. LinearLayout:按照垂直或水平方向线性排列子视图。 2. ...

    新版Android开发教程.rar

    的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...

    Android 基础UI编程4

    Android SDK提供了丰富的UI控件,如TextView、Button、EditText、ImageView等,这些控件可以通过XML布局文件或者代码动态添加。 1. **TextView**:用于显示文本,可设置字体、颜色、大小等样式。 2. **Button**:...

    Android第四章基础UI设计

    在Android应用开发中,基础UI(用户界面)设计是至关重要的一步,因为它直接影响到用户的体验和交互性。本章节将深入探讨Android UI设计的核心概念、组件以及布局管理器。 一、Android UI组件 Android提供了丰富的...

    android程序开发范例宝典(02-05)--源码

    同时,也涉及到了Android设备上的传感器使用,如加速度计、陀螺仪等,以及如何通过SensorManager获取和处理传感器数据。这些内容对于开发涉及多媒体功能或运动跟踪的应用非常重要。 ### 第五章:动画与图形 第五...

    android小游戏

    在Android平台上开发小游戏,如"看图猜成语"这样的应用,涉及到多个技术层面。下面将详细探讨这些技术点,以及如何构建这样的应用。 首先,我们要理解Android应用的基础架构。Android应用主要由Activity、Service、...

    Android常见Views速查表

    - **`android:text`**: 设置按钮上显示的文字。 - 其他属性同 `TextView`。 **示例代码:** ```xml android:id="@+id/next_button" android:layout_width="wrap_content" android:layout_height="wrap_content...

    LeftDrawableEditText

    CompoundDrawable是EditText的一个属性,可以设置四个边(左、上、右、下)的图标,这里用到了左侧的图标。 当用户开始输入文本时,这个自定义控件可能会改变左侧的图片,例如从一个提示性的图标(如“用户名”或...

    Android技术总结.doc

    Android的架构主要包括Linux内核、中间件、应用框架和应用程序四个部分。其中,Linux内核提供基本的系统服务,中间件提供了各种API和库,应用框架提供了UI和应用程序的框架,应用程序是用户可以安装和使用的应用软件...

Global site tag (gtag.js) - Google Analytics