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


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

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

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

来看看效果图:

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

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

搜索框布局:

    <!--
            搜索图标设置  左边
            android:drawableLeft="@mipmap/icon_search"
            android:drawablePadding="5dp"  图标和文字的间距
            右边
            android:drawableRight="@mipmap/round_close"
            android:paddingRight="8dp"
            android:imeOptions="actionSearch"  设置成搜索按钮
        -->
       <EditText
            android:id="@+id/search_text"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="30dp"
            android:hint="输入要搜索的商品"
            android:background="@drawable/search_gray"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="9dp"
            android:textSize="12sp"
            android:drawableLeft="@mipmap/icon_search"
            android:paddingLeft="9dp"
            android:drawablePadding="5dp"
            android:drawableRight="@mipmap/round_close"
            android:paddingRight="8dp"
            android:imeOptions="actionSearch"
            android:maxLines="1"
            android:singleLine="true"
          />
              

键盘监听:

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; } });

首页布局:

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:minHeight="45dp"
        android:orientation="horizontal"
        android:gravity="center_vertical"
        >
        <ImageButton
            android:id="@+id/home_left_scan"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingRight="19dp"
            android:paddingTop="3dp"
            android:paddingBottom="3dp"
            android:paddingLeft="11dp"
            android:layout_centerVertical="true"
            android:background="#00000000"
            />
        <com.zhangqie.searchbox.view.DrawableTextView
            android:id="@+id/home_search"
            android:layout_width="match_parent"
            android:layout_height="28dp"
            android:layout_weight="1"
            android:background="@drawable/search_view_background"
            android:gravity="center_vertical"
            android:maxLines="1"
            android:text="输入搜索相关内容"
            android:drawableLeft="@mipmap/icon_search"
            android:textSize="12sp"
            android:drawablePadding="11dp"
            />
        <ImageButton
            android:id="@+id/home_right_more"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_alignParentRight="true"
            android:paddingRight="15dp"
            android:paddingTop="3dp"
            android:paddingBottom="3dp"
            android:paddingLeft="15dp"
            android:background="#00000000"
            />
    </LinearLayout>

自定义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);
    }
}

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

源码下载

优质内容筛选与推荐>>
1、oracle忽略大小写
2、vue 实现按需加载的3种方式:vue异步组件、es提案的import()、webpack的require.ensure()
3、电脑键盘上你不知道的秘密
4、POJ1083
5、序


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn