Android----- 改变图标原有颜色 和 搜索框

本博客主要讲以下两点知识点

图标改变颜色:Drawable的变色,让Android也能有iOS那么方便的图片色调转换,就像同一个图标,但是有多个地方使用,并且颜色不一样,就可以用这个方法了。

**搜索框: **一般是EditText实现,本文 实现 TextView图片和文字居中,键盘搜索。

来看看效果图:

image

图标改变颜色:第一个界面的左边(二维码)和右边(更多)两个实现,我放进去的图片是黑色的,显示出来是白色的。

image

搜索框:第一个界面的图片和文字居中,还可以设置间距,第二个见面搜索设置键盘搜索按钮,点击搜索监听事件,清除内容的图标。

搜索框布局:

 
       

键盘监听:

searchText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if ((actionId == 0 || actionId == 3) && event != null) {
             //提示搜索内容
                    Toast.makeText(SearchActivity.this,searchText.getText().toString(),Toast.LENGTH_LONG).show();
                    //可以跳转搜索页面
                   /* Intent intent= new Intent(SearchActivity.this,SearchWebViewActivity.class);
                    intent.putExtra("model",model);
                    intent.putExtra("search",searchText.getText().toString());
                    startActivity(intent);
                    finish();*/
                }
                return false;
            }
        });

首页布局:


        
        
        
    

自定义DrawableTextView:(文字图标居中)

public class DrawableTextView extends TextView {

    public DrawableTextView(Context context, AttributeSet attrs,
                            int defStyle) {
        super(context, attrs, defStyle);
    }

    public DrawableTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public DrawableTextView(Context context) {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        Drawable[] drawables = getCompoundDrawables();
        // 得到drawableLeft设置的drawable对象
        Drawable leftDrawable = drawables[0];
        if (leftDrawable != null) {
            // 得到leftDrawable的宽度
            int leftDrawableWidth = leftDrawable.getIntrinsicWidth();
            // 得到drawable与text之间的间距
            int drawablePadding = getCompoundDrawablePadding();
            // 得到文本的宽度
            int textWidth = (int) getPaint().measureText(getText().toString().trim());
            int bodyWidth = leftDrawableWidth + drawablePadding + textWidth;
            canvas.save();
            canvas.translate((getWidth() - bodyWidth) / 2, 0);
        }
        super.onDraw(canvas);
    }
}

看似简单的效果,其实还是不简单的;加油吧! 有问题可以扫头像加新创建的群@我

源码下载

https://github.com/DickyQie/android-basic-control/tree/search-box

你可能感兴趣的:(Android----- 改变图标原有颜色 和 搜索框)