android edittext 居中,Android 搜索框居中 Android EditText搜索框实现图标居中

想了解Android EditText搜索框实现图标居中的相关内容吗,NengLee在本文为您仔细讲解Android 搜索框居中的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Android,搜索框居中,Android,EditText搜索框居中,下面大家一起来学习吧。

类似这样EditText 搜索框,hiht 提示有一个icon并且text内容。

2017070716324720.png

2017070716324721.png

重写EditText :

package mobi.truekey.weapp2.widget;

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 android.widget.EditText;

import mobi.truekey.weapp2.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.drawable.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;

}

}

attr:

drawable背景:

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

相关文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值