android 搜索图标居中,Android中搜索图标和文字居中的EditText
效果图:
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相关推荐
- css如何实现让div中的多行文字居中显示
标题css如何实现让div中的多行文字居中显示 最近在做项目的时候遇到一个div中有多行文字(可能一行也可能多行)需要实现居中显示,试了好多方法都不行,显然不能使用padding来居中,因为文字有多少 ...
- android 按钮带图标 阴影_android中带图标的按钮(ImageButton)怎么用
展开全部 除了Android系统自带的Button按钮以外,还提供了带图标的按钮ImageButton 要制作带图标的按钮,首先要在布局62616964757a686964616fe58685e5ae ...
- (转自ztp800201) Android - 自定义标题栏(在标题栏中增加按钮和文本居中)
现在很多的Android程序都在标题栏上都显示了一些按钮和标题,如下图: 下面通过实例来看一下如何实现. 1.在layout下创建一个titlebtn.xml文件,内容如下: 1 <?xml v ...
- 如何使用Windows搜索在任何文件中搜索文本
Many of us rely on Windows Search to find files and launch programs, but searching for text within f ...
- 广义图标与界面中的图标
图标是具有明确指代含义的计算机图形 桌面图标是软件标识,界面中的图标是功能标识. 广义--具有指代意义的图形符号,具有高度浓缩并快捷传达信息.便于记忆的特性.应用范围很广,软硬件网页社交场所公共场合无 ...
- 在Vue+Element ui 项目中如何使用iconfont(阿里图标库)中的图标
在项目过程中,element ui 中自带的图标往往满足不了自己的需求,那么如何在项目中使用iconfont的图标呢? 在iconfont中新建一个项目 找到自己想要的图标,加入购物车,加入完成后点击 ...
- android actionbar 文字居中,ActionBar设置自定义布局使文字居中
在ToolBar出现之前,安卓顶部使用的是ActionBar技术,但是系统自带的ActionBar有几个问题,一是系统自带的返回键是一个小于号,Title文字的位置也默认在左边.如果有产品要求我们做出 ...
- html文本字段标签居中,html中实现文本与标签居中的方法
html中实现文本与标签居中的方法 发布时间:2020-08-31 09:44:08 来源:亿速云 阅读:66 作者:小新 这篇文章主要介绍html中实现文本与标签居中的方法,文中介绍的非常详细,具有 ...
- php网页文字居中代码怎么写,html里文字居中代码怎么写?_WEB前端开发
web前端是什么意思?_WEB前端开发 web前端就是前端网络编程,也被认为是用户端编程,是为了网页或者网页应用,而编写HTML,CSS以及JS代码,所以用户能够看到并且和这些页面进行交流. html ...
- html文字左右两边有居中的直线,css怎么实现文字居中两边横线效果
css怎么实现文字居中两边横线效果 发布时间:2021-03-19 09:50:44 来源:亿速云 阅读:92 作者:小新 这篇文章将为大家详细讲解有关css怎么实现文字居中两边横线效果,小编觉得挺实 ...
最新文章
- 仅有算法远远不够:AI突破下一站,需要对硬件重新审视
- PostgreSQL在何处处理 sql查询之十二
- eclipse下载,安装,JDk环境配置教程
- IDEA2020版本如何导入jar包
- ASP.NET Core MVC 2.1 顶级参数验证
- Navicat Premium 64 bit 12.1.25
- Elasticsearch使用备忘
- AI (1)---没错,AR其实也是AI
- mysql笔试_mysql笔试题
- 什么情况下不应该使用深度学习?
- 网络协议:关于TCP/IP,必须知道的十个知识点
- python2.7_call
- 知识蒸馏综述:代码整理
- vscode统计代码行数
- 企业微信怎么填写服务器,勤哲Excel服务器软件做企业微信管理系统
- Excel常用函数及操作_脑图
- excel如何去重统计户数_如何用好excel统计函数
- 女朋友嘲笑我没有艺术气息,我不服!!一气之下我用python画素描人像
- 安排,2020新kafka视频教程零基础到精通
- ▲ Android 签到打卡效果
热门文章
- 关于Oxite的教训
- android 3.x,Android Studio3.x的坑(三)
- php url gb2312 utf8,php实现utf-8与gb2312的url编码转换
- DBA的宿命(困兽之斗)
- stm32移植freemodbusRTU(HAL库+Freertos)主机
- presto是如何保证作业内存不会发生冲突和溢出
- 学棋五年的我输给了昇腾CANN
- 空中交警:借你一双“慧眼”,让你看透这飞机的“黑色十分钟”
- 【5G科普】华为码chine姐姐聊5G 第1期:5G究竟是个啥?
- 【华为云技术分享】玩转云上数据湖,解析Serverless 技术落地