歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android在EditView中插入圖片

Android在EditView中插入圖片

日期:2017/3/1 10:31:01   编辑:Linux編程
默認的EditView是無法顯示圖片的。所以想要實現這個功能得需要我們自己為其添加一個方法。

在這裡我們采用SpannableString和ImageSpan兩個類來實現這一功能。

先上效果圖:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2012年資料/2月/19日/Android在EditView中插入圖片/

main.xml布局文件。我們使用自己定義的EditText

[java]
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <easy.stu.MyEditText
  7. android:id="@+id/myEdit"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content" />
  10. <Button
  11. android:id="@+id/myButton"
  12. android:layout_width="fill_parent"
  13. android:layout_height="wrap_content"
  14. android:text="insert" />
  15. </LinearLayout>

MyEditText.java

[java]
  1. package easy.stu;
  2. import android.content.Context;
  3. import android.graphics.drawable.Drawable;
  4. import android.text.Spannable;
  5. import android.text.SpannableString;
  6. import android.text.style.ImageSpan;
  7. import android.util.AttributeSet;
  8. import android.widget.EditText;
  9. public class MyEditText extends EditText {
  10. public MyEditText(Context context) {
  11. super(context);
  12. }
  13. public MyEditText(Context context, AttributeSet attrs) {
  14. super(context, attrs);
  15. }
  16. public void insertDrawable(int id) {
  17. final SpannableString ss = new SpannableString("easy");
  18. //得到drawable對象,即所要插入的圖片
  19. Drawable d = getResources().getDrawable(id);
  20. d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
  21. //用這個drawable對象代替字符串easy
  22. ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
  23. //包括0但是不包括"easy".length()即:4。[0,4)。值得注意的是當我們復制這個圖片的時候,實際是復制了"easy"這個字符串。
  24. ss.setSpan(span, 0, "easy".length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
  25. append(ss);
  26. }
  27. }

MyActivity.java

[java]
  1. package easy.stu;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.view.View.OnClickListener;
  6. import android.widget.Button;
  7. public class MyActivity extends Activity {
  8. /** Called when the activity is first created. */
  9. Button b;
  10. MyEditText e;
  11. public void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.main);
  14. b = (Button) findViewById(R.id.myButton);
  15. e = (MyEditText) findViewById(R.id.myEdit);
  16. b.setOnClickListener(new OnClickListener() {
  17. public void onClick(View v) {
  18. e.insertDrawable(R.drawable.easy);
  19. }
  20. });
  21. }
  22. }
Copyright © Linux教程網 All Rights Reserved