1. 程式人生 > >Android----- 改變圖示原有顏色 和 搜尋框

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

  看似簡單的效果,其實還是不簡單的;加油吧!  有問題可以掃頭像加新建立的群@我 

  原始碼下載


相關推薦

Android----- 改變圖示原有顏色 搜尋

本部落格主要講以下兩點知識點 圖示改變顏色:Drawable的變色,讓Android也能有iOS那麼方便的圖片色調轉換,就像同一個圖示,但是有多個地方使用,並且顏色不一樣,就可以用這個方法了。 搜尋框: 一般是EditText實現,本文 實現 TextView圖片和文字居中

Android----- 改變圖標原有顏色 搜索

geb 跳轉 single zha height string -1 actions super 本博客主要講以下兩點知識點 圖標改變顏色:Drawable的變色,讓Android也能有iOS那麽方便的圖片色調轉換,就像同一個圖標,但是有多個地方使用,並且顏色不一樣,就可以

關於android自定義字型顏色點選改變字型顏色

先看效果圖 上面的為點選按下的效果圖 上面的為預設的(鬆開按鈕)的效果圖 首先我們先在values資料夾下新建一個color.xml檔案 這檔案就是配置我們要使用的顏色 程式碼如下 <?xml version="1.0" encoding

Android自定義View——自定義搜尋(SearchView) 非常實用的控制元件

好多東西寫起來太麻煩了,而且我在最開始用的也不是自己寫的,所以找了一個非常棒的測試了一下.  轉載的 在 Android開發中,當系統資料項比較多時,常常會在app新增搜尋功能,方便使用者能快速獲得需要的資料。搜尋欄對於我們並不陌生,在許多app都能見到它,比如豌

recycleview瀑布搜尋

在drawable建立shape <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:s

iOS UITableView加索引條搜尋Demo

#import "MainViewController.h" @implementation MainViewController { //資料來源陣列 NSMutableArray*_dataArray; //搜尋結果陣列 NSMutab

Android改變狀態列顏色導航不變

(1) 在你的activity oncreate 中新增 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);  if (Build.VERSION.SDK_INT >=

android 改變游標的顏色及樣式

<EditText android:id="@+id/find_edit" android:layout_width="wrap_content"

Android改變狀態列顏色及沉浸式模式的封裝

talk is cheap,show me your code. /** * Author: zhangbo * Data:2018/9/7 * TODO: */ public class StatusBarUtil { /** *

實現listview條目點選後改變item背景顏色字型顏色並保留

先上效果圖。 其實實現是很簡單的在item的佈局中設定背景顏色選擇器,當item被選中時就會改變背景顏色 字型顏色在listview的adapter這種進行設定,定義標記記錄當前被點選的item

MFC List Control控制元件改變Item的顏色背景色

https://msdn.microsoft.com/zh-cn/library/ms364048(v=vs.80).aspx http://blog.csdn.net/leixiaohua1020/article/details/12619341http://www.j

android spinner 修改字型顏色大小

class TextApapter extends ArrayAdapter{ private Context mContext; private String [] mStringArray; public TextApap

android 改變狀態列字型顏色圖示顏色沉浸式

設定沉浸式狀態列protected boolean useThemestatusBarColor = false;//是否使用特殊的標題欄背景顏色,android5.0以上可以設定狀態列背景色,如果不使用則使用透明色值 protected boolean useSta

Android搜尋的關鍵字高亮變色(解決部分產生顏色無效問題)

目前在很多App裡面都有搜尋的功能,搜尋的結果列表要與輸入的文字對應高亮,也就是關鍵字顯示高亮,關鍵字顯示相應的顏色,這樣會使app體驗更好。在此我從網上各種搜尋資料,目前參考別人大神的思路和寫法,模仿與總結一個工具和自定義TextView。 第一種方式:也是比較方便的一種

Android點選文字編輯進行縮放、移動改變字型、顏色的實現

實現效果如下: 需求功能點包含: 1:介面的文字為動態新增; 2:點選介面中的文字,開啟編輯模式:可編輯文字內容,可設定字型顏色,字型型別,粗體及對齊等; 3:點選刪除從介面上清除文字塊; 4:拖動編輯模式下的文字塊的四個錨點,可以按文字中心位置縮放,同時工具欄跟隨文字

android:修改PagerTabStrip中的背景顏色,標題字型的樣式、顏色圖示以及指示條的顏色

1.修改PagerTabStrip中的背景顏色 我們在佈局中直接設定background屬性即可: <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="fill_parent" andro

Android 搜尋:SearchView 的屬性用法詳解

SearchView簡介 SearchView是Android原生的搜尋框控制元件,它提供了一個使用者介面,用於使用者搜尋查詢。 SearchView預設是展示一個search的icon,

Android定製控制元件:帶圖示的TextView可編輯文字(附專案原始碼)

各位朋友,博主向大家問好啦! 初次見面,多多關照。 博主正在學習移動開發,今天老師教授的是定製控制元件:帶圖示的TextView, 然後課後依葫蘆畫瓢,博主定製了一個帶圖示的可編輯文字框,其實原理都一樣! 博主覺得該課題具有可鑑意義,特此分享給大家,幫助入門級開發人員,大蝦

iconfont的使用,阿里向量相簿的引用,配置,改變圖示大小圖示顏色

怎麼使用iconfont首先找到自己想要的圖示,新增到購物車如果你只要一個圖示的話,或者確保之後這個專案不需要其他的圖示的話,可以直接選擇下載程式碼,但是你有多個圖示的話,最好選擇新增至專案無論是新增專案還是直接下載程式碼,下載之後會有一個download.zip包,解壓之後

Android 中隨焦點動態改變Seekbar 的Progress 顏色滑塊的顏色

----前言 最近做的一個專案中有個需求是Recyclerview 的seekbar item 在獲取到焦點後要改變seekbar 的進度條的顏色。這個小小的需求卻耗費了一下午的時間,本來都快查到對progressDrawable進行層次設定,最後覺得不行和老