全网整合营销服务商

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

免费咨询热线: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 


相关文章: 如何通过WDCP绑定主域名及创建子域名站点?  如何通过cPanel快速搭建网站?  ,购物网站怎么盈利呢?  如何用狗爹虚拟主机快速搭建网站?  建站之星安全性能如何?防护体系能否抵御黑客入侵?  魔方云NAT建站如何实现端口转发?  济南专业网站制作公司,济南信息工程学校怎么样?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  制作农业网站的软件,比较好的农业网站推荐一下?  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  英语简历制作免费网站推荐,如何将简历翻译成英文?  建站主机数据库如何配置才能提升网站性能?  如何通过商城自助建站源码实现零基础高效建站?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  如何在万网主机上快速搭建网站?  建站之星微信建站一键生成小程序+多端营销系统  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  如何用wdcp快速搭建高效网站?  南宁网站建设制作定制,南宁网站建设可以定制吗?  建站之星后台管理:高效配置与模板优化提升用户体验  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何正确下载安装西数主机建站助手?  如何零成本快速生成个人自助网站?  如何在Tomcat中配置并部署网站项目?  模具网站制作流程,如何找模具客户?  制作营销网站公司,淘特是干什么用的?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  建站10G流量真的够用吗?如何应对访问高峰?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  网站企业制作流程,用什么语言做企业网站比较好?  盐城做公司网站,江苏电子版退休证办理流程?  ,有什么在线背英语单词效率比较高的网站?  文字头像制作网站推荐软件,醒图能自动配文字吗?  大连网站制作公司哪家好一点,大连买房网站哪个好?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  南平网站制作公司,2025年南平市事业单位报名时间?  Swift中循环语句中的转移语句 break 和 continue  如何获取免费开源的自助建站系统源码?  如何在腾讯云服务器上快速搭建个人网站?  图册素材网站设计制作软件,图册的导出方式有几种?  江苏网站制作公司有哪些,江苏书法考级官方网站?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  建站主机功能解析:服务器选择与快速搭建指南  娃派WAP自助建站:免费模板+移动优化,快速打造专业网站  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  如何在建站之星网店版论坛获取技术支持? 

您的项目需求

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