效果图:

image.png

需要自定义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下添加

搜索图片

search.png

在布局文件中调用如下

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中搜索图标和文字居中的EditText相关推荐

  1. css如何实现让div中的多行文字居中显示

    标题css如何实现让div中的多行文字居中显示 最近在做项目的时候遇到一个div中有多行文字(可能一行也可能多行)需要实现居中显示,试了好多方法都不行,显然不能使用padding来居中,因为文字有多少 ...

  2. android 按钮带图标 阴影_android中带图标的按钮(ImageButton)怎么用

    展开全部 除了Android系统自带的Button按钮以外,还提供了带图标的按钮ImageButton 要制作带图标的按钮,首先要在布局62616964757a686964616fe58685e5ae ...

  3. (转自ztp800201) Android - 自定义标题栏(在标题栏中增加按钮和文本居中)

    现在很多的Android程序都在标题栏上都显示了一些按钮和标题,如下图: 下面通过实例来看一下如何实现. 1.在layout下创建一个titlebtn.xml文件,内容如下: 1 <?xml v ...

  4. 如何使用Windows搜索在任何文件中搜索文本

    Many of us rely on Windows Search to find files and launch programs, but searching for text within f ...

  5. 广义图标与界面中的图标

    图标是具有明确指代含义的计算机图形 桌面图标是软件标识,界面中的图标是功能标识. 广义--具有指代意义的图形符号,具有高度浓缩并快捷传达信息.便于记忆的特性.应用范围很广,软硬件网页社交场所公共场合无 ...

  6. 在Vue+Element ui 项目中如何使用iconfont(阿里图标库)中的图标

    在项目过程中,element ui 中自带的图标往往满足不了自己的需求,那么如何在项目中使用iconfont的图标呢? 在iconfont中新建一个项目 找到自己想要的图标,加入购物车,加入完成后点击 ...

  7. android actionbar 文字居中,ActionBar设置自定义布局使文字居中

    在ToolBar出现之前,安卓顶部使用的是ActionBar技术,但是系统自带的ActionBar有几个问题,一是系统自带的返回键是一个小于号,Title文字的位置也默认在左边.如果有产品要求我们做出 ...

  8. html文本字段标签居中,html中实现文本与标签居中的方法

    html中实现文本与标签居中的方法 发布时间:2020-08-31 09:44:08 来源:亿速云 阅读:66 作者:小新 这篇文章主要介绍html中实现文本与标签居中的方法,文中介绍的非常详细,具有 ...

  9. php网页文字居中代码怎么写,html里文字居中代码怎么写?_WEB前端开发

    web前端是什么意思?_WEB前端开发 web前端就是前端网络编程,也被认为是用户端编程,是为了网页或者网页应用,而编写HTML,CSS以及JS代码,所以用户能够看到并且和这些页面进行交流. html ...

  10. html文字左右两边有居中的直线,css怎么实现文字居中两边横线效果

    css怎么实现文字居中两边横线效果 发布时间:2021-03-19 09:50:44 来源:亿速云 阅读:92 作者:小新 这篇文章将为大家详细讲解有关css怎么实现文字居中两边横线效果,小编觉得挺实 ...

最新文章

  1. 仅有算法远远不够:AI突破下一站,需要对硬件重新审视
  2. PostgreSQL在何处处理 sql查询之十二
  3. eclipse下载,安装,JDk环境配置教程
  4. IDEA2020版本如何导入jar包
  5. ASP.NET Core MVC 2.1 顶级参数验证
  6. Navicat Premium 64 bit 12.1.25
  7. Elasticsearch使用备忘
  8. AI (1)---没错,AR其实也是AI
  9. mysql笔试_mysql笔试题
  10. 什么情况下不应该使用深度学习?
  11. 网络协议:关于TCP/IP,必须知道的十个知识点
  12. python2.7_call
  13. 知识蒸馏综述:代码整理
  14. vscode统计代码行数
  15. 企业微信怎么填写服务器,勤哲Excel服务器软件做企业微信管理系统
  16. Excel常用函数及操作_脑图
  17. excel如何去重统计户数_如何用好excel统计函数
  18. 女朋友嘲笑我没有艺术气息,我不服!!一气之下我用python画素描人像
  19. 安排,2020新kafka视频教程零基础到精通
  20. ▲ Android 签到打卡效果

热门文章

  1. 关于Oxite的教训
  2. android 3.x,Android Studio3.x的坑(三)
  3. php url gb2312 utf8,php实现utf-8与gb2312的url编码转换
  4. DBA的宿命(困兽之斗)
  5. stm32移植freemodbusRTU(HAL库+Freertos)主机
  6. presto是如何保证作业内存不会发生冲突和溢出
  7. 学棋五年的我输给了昇腾CANN
  8. 空中交警:借你一双“慧眼”,让你看透这飞机的“黑色十分钟”
  9. 【5G科普】华为码chine姐姐聊5G 第1期:5G究竟是个啥?
  10. 【华为云技术分享】玩转云上数据湖,解析Serverless 技术落地