全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android中搜索图标和文字居中的EditText实例

效果图:

需要自定义view,具体实现如下:

import android.widget.EditText;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;

import com.example.administrator.mahu.R;

public class SearchView extends EditText {

  private float searchSize = 0;
  private float textSize = 0;
  private int textColor = 0xFF000000;
  private Drawable mDrawable;
  private Paint paint;

  public SearchView(Context context, AttributeSet attrs) {
    super(context, attrs);
    InitResource(context, attrs);
    InitPaint();
  }

  private void InitResource(Context context, AttributeSet attrs) {
    TypedArray mTypedArray = context.obtainStyledAttributes(attrs, R.styleable.searchedit);
    float density = context.getResources().getDisplayMetrics().density;
    searchSize = mTypedArray.getDimension(R.styleable.searchedit_imagewidth, 18 * density + 0.5F);
    textColor = mTypedArray.getColor(R.styleable.searchedit_textColor, 0xFF848484);
    textSize = mTypedArray.getDimension(R.styleable.searchedit_textSize, 14 * density + 0.5F);
    mTypedArray.recycle();
  }

  private void InitPaint() {
    paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    paint.setColor(textColor);
    paint.setTextSize(textSize);
  }

  @Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    DrawSearchIcon(canvas);
  }

  private void DrawSearchIcon(Canvas canvas) {
    if (this.getText().toString().length() == 0) {
      float textWidth = paint.measureText("搜索");
      float textHeight = getFontLeading(paint);

      float dx = (getWidth() - searchSize - textWidth - 8) / 2;
      float dy = (getHeight() - searchSize) / 2;

      canvas.save();
      canvas.translate(getScrollX() + dx, getScrollY() + dy);
      if (mDrawable != null) {
        mDrawable.draw(canvas);
      }
      canvas.drawText("搜索", getScrollX() + searchSize + 8, getScrollY() + (getHeight() - (getHeight() - textHeight) / 2) - paint.getFontMetrics().bottom - dy, paint);
      canvas.restore();
    }
  }

  @Override
  protected void onAttachedToWindow() {
    super.onAttachedToWindow();
    if (mDrawable == null) {
      try {
        mDrawable = getContext().getResources().getDrawable(R.mipmap.search);
        mDrawable.setBounds(0, 0, (int) searchSize, (int) searchSize);
      } catch (Exception e) {

      }
    }
  }

  @Override
  protected void onDetachedFromWindow() {
    if (mDrawable != null) {
      mDrawable.setCallback(null);
      mDrawable = null;
    }
    super.onDetachedFromWindow();
  }

  public float getFontLeading(Paint paint) {
    Paint.FontMetrics fm = paint.getFontMetrics();
    return fm.bottom - fm.top;
  }

}

在values---attrs下添加

<declare-styleable name="searchedit">
    <attr name="imagewidth" format="dimension" />
    <attr name="textSize" format="dimension" />
    <attr name="textColor" format="color" />
 </declare-styleable>

搜索图片


在布局文件中调用如下

<com.example.administrator.mahu.view.SearchView
    android:id="@+id/search"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:layout_below="@+id/layout"
    android:background="@drawable/search_kuang"
    android:textSize="17sp"
    android:paddingLeft="5dp"
    android:singleLine="true"
    android:imeOptions="actionSearch"
    />

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# android  # 搜索图标居中  # 图标居中  # Android Canvas drawText文字居中的一些事(图解)  # Android自定义TextView实现文字图片居中显示的方法  # Android EditText搜索框实现图标居中  # Android DrawableTextView图片文字居中显示实例  # Android编程实现图片的浏览、缩放、拖动和自动居中效果  # android imageview图片居中技巧应用  # Android图文居中显示控件使用方法详解  # 自定义  # 大家多多  # InitResource  # InitPaint  # super  # void  # styleable  # searchedit  # mTypedArray  # obtainStyledAttributes  # textColor  # textSize  # int  # context  # attrs  # mDrawable  # paint  # density  # recycle  # searchedit_textSize 


相关文章: 建站主机是否等同于虚拟主机?  如何快速登录WAP自助建站平台?  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  实例解析angularjs的filter过滤器  如何制作算命网站,怎么注册算命网站?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  c# Task.ConfigureAwait(true) 在什么场景下是必须的  详解jQuery中基本的动画方法  建站之星后台密码如何安全设置与找回?  专业公司网站制作公司,用什么语言做企业网站比较好?  建站主机与服务器功能差异如何区分?  建站之星客服服务时间及联系方式如何?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  如何高效生成建站之星成品网站源码?  建站之星如何实现PC+手机+微信网站五合一建站?  如何用搬瓦工VPS快速搭建个人网站?  如何挑选高效建站主机与优质域名?  建站之星安装后如何自定义网站颜色与字体?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  ,怎么在广州志愿者网站注册?  如何在IIS中新建站点并解决端口绑定冲突?  如何快速搭建高效服务器建站系统?  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  潮流网站制作头像软件下载,适合母子的网名有哪些?  PHP 500报错的快速解决方法  建站之星如何通过成品分离优化网站效率?  如何在景安云服务器上绑定域名并配置虚拟主机?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  建站之星安装后界面空白如何解决?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  如何在腾讯云服务器快速搭建个人网站?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  网站网页制作专业公司,怎样制作自己的网页?  如何高效搭建专业期货交易平台网站?  如何规划企业建站流程的关键步骤?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  大连 网站制作,大连天途有线官网?  建站主机类型有哪些?如何正确选型  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  如何制作网站标识牌,动态网站如何制作(教程)?  如何获取PHP WAP自助建站系统源码?  如何选择高效响应式自助建站源码系统?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  css网站制作参考文献有哪些,易聊怎么注册?  javascript基本数据类型及类型检测常用方法小结 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。