zoukankan      html  css  js  c++  java
  • 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);
        }
    }

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

      源码下载

  • 相关阅读:
    基于Simple Image Statistics(简单图像统计,SIS)的图像二值化算法。
    【Oracle】-【LRU和DBWR】-LRU算法与DBWR中的应用
    java系列之 原生数据类型
    mmc生产任务分配问题续
    中小型数据库 RMAN CATALOG 备份恢复方案(一)
    正则表达式速查表
    IE中div被视频遮住的解决方法
    IIS发布以后,handle文件找不到,404错误
    cocos 主循环
    SRM 449 DIV 1 总结(550p标记下,下次做)
  • 原文地址:https://www.cnblogs.com/zhangqie/p/7521365.html
Copyright © 2011-2022 走看看