效果图:

6bd18b7e5ec7b8e85741ee4d1a292032.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下添加

搜索图片

9cc1a67a4922af5a14983a995d08fe96.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"

/>

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

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐