博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android----- 改变图标原有颜色 和 搜索框
阅读量:6607 次
发布时间:2019-06-24

本文共 2375 字,大约阅读时间需要 7 分钟。

hot3.png

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

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

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

来看看效果图:

    

 

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

           

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

搜索框布局:

 

键盘监听:

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://my.oschina.net/zhangqie/blog/1539609

你可能感兴趣的文章
MySQL服务器学习笔记!(一) ——数据库相关概念
查看>>
Eclipse 常用的快捷键及其他常用功能小结
查看>>
redis 分页查询
查看>>
shutdown命令的用法
查看>>
shell 管理SpringBoot 生产环境服务 (配置JVM)
查看>>
如何规划工程研究工作
查看>>
cordova imagePicker 使用
查看>>
zabbix监控MySQL(windows和linux环境)
查看>>
PHP opcache
查看>>
Shell.Application (vbs)
查看>>
tomcat配置管理(二):基于多端口的tomcat配置
查看>>
android ExpandableListView ExpandableListAdapter使用
查看>>
刨根问底 HTTP 和 WebSocket 协议
查看>>
myeclipse闪退故障
查看>>
Windows Server 2008 R2远程桌面服务配置和授权激活
查看>>
Java的Finalizer引发的内存溢出
查看>>
百度音乐接口-——可以根据这做一个在线音乐播放器哦
查看>>
Vc中API函数 ShellExecute用法
查看>>
流策略
查看>>
nginx 自动封 ip 过高连接
查看>>