1. 程式人生 > >自定義控制元件讓EditText的drawableLeft與文字一起居中顯示

自定義控制元件讓EditText的drawableLeft與文字一起居中顯示

如上圖  專案中要求的顯示效果是serch圖片和EditText的文字一起在中間位置。

嘗試設定了很多EditText均不能實現滿意的效果,其中:

android:drawableLeft=""
android:drawableRight=""
設定的位置均在兩邊,不能滿足需求。
在此推薦一個方法,用自定義的EditText,如下:
public class MyEditText extends EditText {


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

    public MyEditText(Context context, AttributeSet attrs) {
        super
(context, attrs); } public MyEditText(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public MyEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super
(context, attrs, defStyleAttr, defStyleRes); } @Override protected void onDraw(Canvas canvas) { Drawable[] drawables = getCompoundDrawables(); if (drawables != null) { Drawable drawableLeft = drawables[0]; if (drawableLeft != null) { float
textWidth = getPaint().measureText(getText().toString()); int drawablePadding = getCompoundDrawablePadding(); int drawableWidth = 0; drawableWidth = drawableLeft.getIntrinsicWidth(); float bodyWidth = textWidth + drawableWidth + drawablePadding; canvas.translate((getWidth() - bodyWidth) / 5, 0); } } super.onDraw(canvas); }
程式碼中黃色部分中的數字“5”,可控制圖片的位置,此時再設定
drawableLeft
即可達到如圖效果。
另外TextView也可以用此方法實現類似效果

相關推薦

定義控制元件TextView的drawableLeft文字一起居中顯示

Drawable[] drawables = getCompoundDrawables();          if  (drawables != 

定義控制元件TextView、Button的drawableLeft和drawableRight文字一起居中顯示

TextView的drawableLeft、drawableRight和drawableTop是一個常用、好用的屬性,可以在文字的上下左右放置一個圖片,而不使用更加複雜佈局就能達到,我也常常喜歡用Ra

定義控制元件TextView(Radiobutton)、Button的drawableLeft和drawableRight文字一起居中顯示

TextView的drawableLeft、drawableRight和drawableTop是一個常用、好用的屬性,可以在文字的上下左右放置一個圖片,而不使用更加複雜佈局就能達到,我也常常喜歡用RadioButton的這幾個屬性實現很多效果,但是苦於不支援讓drawbl

定義控制元件EditText的drawableLeft文字一起居中顯示

如上圖  專案中要求的顯示效果是serch圖片和EditText的文字一起在中間位置。 嘗試設定了很多EditText均不能實現滿意的效果,其中: android:drawableLeft="" android:drawableRight=""設定的位置均在兩邊,不能滿足

Qt定義控制元件的建立初步使用(二)之圖片上繪製文字、箭頭、曲線

本文目的:編輯自定義控制元件的介面ui,並在圖片上添文字、箭頭、曲線、開啟、儲存等功能。並說明了如何去使用這個編輯好的ui介面控制元件! 上次簡單的說明了如何去建立Qt自定義控制元件,當時還是對其瞭解不夠深刻,現在看來,QT自定義控制元件就是你事先把介面寫好(一般基於QWi

定義控制元件--背景顏色隨ViewPager的滑動而漸變

轉載請註明出處,謝謝~ 今天要說一個簡單但不好想的效果實現。程式碼絕對簡單,實現絕對easy,就是你可能想不到而已。 不多說,上效果圖。第一個效果是仿最美應用的滑動顏色變化,第二個是我專案中要用的效果,實現後我就貼出來了,開源嘛。               下面分別說說

Qt定義控制元件的建立初步使用

本篇部落格的目的是簡單介紹:建立一個用QLabel類來顯示圖片的自定義控制元件的編寫。在寫自定義控制元件的過程中遇到了很多的難題,但都慢慢解決了,本人對Qt自定義控制元件的認識還不深刻,做的不對的地方,還請大家指出,我會盡快修改,免得誤導他人! 配置:Qt creator5

Android定義控制元件系列(二)—icon+文字的多種效果實現

今天給大家帶來一個很簡單但是很常用的控制元件ButtonExtendM,在開發中我們經常會用到圖片加文字的組合控制元件,像這樣: 以上圖片都是從微信上擷取的。(暫時沒有找到icon在下,文字在上的例子) 下面我們通過一個控制元件來實現上下左右全部

TextView的drawableLeft文字一起居中顯示(以及程式碼設定drawableLeft)

網上一搜全是自定義控制元件,其實去看看TextView的屬性,就能發現,解決這個問題,直接xml檔案中就能搞定,程式碼如下: <!-- 不明白的屬性請自行查閱資料--> <TextView android:id="@+id/tv_finish"

你的app提升一個檔次-Android酷炫定義控制元件

這是我近期整理的比較酷炫並且我們會經常用到的custom view,也有一些不是custom view,但是也是android UI相關的,實現了酷炫UI效果的開源庫,合理利用這些開源庫,可以讓你的app提升一個檔次!總結的專案最後維護時間一般不會超過6個月,會持續更新。部落格可能不能實

《Android群英傳》學習筆記之Android控制元件架構定義控制元件詳解

一、Android控制元件架構: 控制元件大致分為兩類:ViewGroup控制元件與View控制元件。View是繪製在螢幕上的使用者能與之互動的一個物件。而ViewGroup則是一個用於存放其他Vi

【轉】WPF定義控制元件樣式(3)-TextBox & RichTextBox & PasswordBox樣式、水印、Label標籤、功能擴充套件

一.前言.預覽   申明:WPF自定義控制元件與樣式是一個系列文章,前後是有些關聯的,但大多是按照由簡到繁的順序逐步釋出的等。 本文主要是對文字輸入控制元件進行樣式開發,及相關擴充套件功能開發,主要內容包括: 基本文字框TextBox控制元件樣式及擴充套件功能,實現了樣式、水印、Label標籤、功

【轉】WPF定義控制元件樣式(5)-Calendar/DatePicker日期控制元件定義樣式及擴充套件

一.前言   申明:WPF自定義控制元件與樣式是一個系列文章,前後是有些關聯的,但大多是按照由簡到繁的順序逐步釋出的等。 本文主要內容: 日曆控制元件Calendar自定義樣式; 日期控制元件DatePicker自定義樣式,及Label標籤、水印、清除日期功能擴充套件; 二.Calend

【轉】WPF定義控制元件樣式(9)-樹控制元件TreeView選單Menu-ContextMenu

一.前言   申明:WPF自定義控制元件與樣式是一個系列文章,前後是有些關聯的,但大多是按照由簡到繁的順序逐步釋出的等。   本文主要內容: 選單Menu的自定義樣式; 右鍵選單ContextMenu的自定義樣式; 樹控制元件TreeView的自定義樣式,及右鍵選單實現。 二.選單M

【轉】WPF定義控制元件樣式(8)-ComboBox定義多選控制元件MultComboBox

一.前言   申明:WPF自定義控制元件與樣式是一個系列文章,前後是有些關聯的,但大多是按照由簡到繁的順序逐步釋出的等。   本文主要內容: 下拉選擇控制元件ComboBox的自定義樣式及擴充套件; 自定義多選控制元件MultiComboBox; 二.下拉選擇控制元件ComboBox的自

【轉】WPF定義控制元件樣式(11)-等待/忙/正在載入狀態-控制元件實現

一.前言   申明:WPF自定義控制元件與樣式是一個系列文章,前後是有些關聯的,但大多是按照由簡到繁的順序逐步釋出的等。   本文主要有三種實現方式: 簡單忙碌狀態控制元件BusyBox; Win8/win10效果忙碌狀態控制元件ProgressRing; 彈出非同步等待框WaitingB

【轉】WPF定義控制元件樣式(12)-縮圖ThumbnailImage /gif動畫圖/圖片列表

一.前言   申明:WPF自定義控制元件與樣式是一個系列文章,前後是有些關聯的,但大多是按照由簡到繁的順序逐步釋出的等,若有不明白的地方可以參考本系列前面的文章,文末附有部分文章連結。   本文主要針對WPF專案開發中圖片的各種使用問題,經過總結,把一些經驗分享一下。內容包括: WPF常

【轉】WPF定義控制元件樣式(13)-定義窗體Window & 適應內容大小訊息框MessageBox

一.前言   申明:WPF自定義控制元件與樣式是一個系列文章,前後是有些關聯的,但大多是按照由簡到繁的順序逐步釋出的等。   本文主要內容: 自定義Window窗體樣式; 基於自定義窗體實現自定義MessageBox訊息提示框; 二.自定義Window窗體樣式   自定義的Window

Android定義控制元件文字提示的SeekBar

轉載請註明出處:juejin.im/post/5c1af0… 本文出自 容華謝後的部落格 1.寫在前面 SeekBar控制元件在開發中還是比較常見的,比如音視訊進度、音量調節等,但是原生控制元件有時還不能滿足我們的需求,今天就來學習一下如何自定義SeekBar控制元件,本文主要實現了一個帶文

定義控制元件三部曲之動畫篇(十一)——layoutAnimationgridLayoutAnimation

前言:人或許天生是懶惰的,明知道的不足,卻不努力彌補。 前幾篇給大家講述瞭如何針對某一個控制元件應用動畫,這篇將給大家講解如何給容器中的控制元件應用統一動畫。即在容器中控制元件出現時,不必為每個控制元件新增進入動畫,可以在容器中為其新增統一的進入和