Android控制元件之帶清空按鈕(功能)的AutoCompleteTextView自動提示
功能折騰完了記錄一下。帶刪除按鈕的AutoCompleteTextView,普通的自動提示控制元件用起來比較簡單,準備好陣列給控制元件setAdapter一下行了,這裡要說的是提取sqlite中的資料繫結並且加上清空按鈕,先來張圖片。
最初沒有用過AutoCompleteTextView的時候,就直接百度了下,想必都會得到這樣一段程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
publicclassMainActivityextendsActivity{
privateAutoCompleteTextView
autotext;
privateArrayAdapter<String>arrayAdapter;
@Override
protectedvoidonCreate(Bundle
savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
autotext |
上面的程式碼簡單,但是不大實用,比如我的需求就是,要有清空按鈕。然後繼續百度,又找到了這篇文章(繼承AutoCompleteTextView自定義控制元件ClearableAutoCompleteTextView,自定義adapter方式實現)
1 | <span style="font-style: italic; color: #629755;">https://gist.github.com/mderazon/6700044</span> |
然後就閉著眼抄了一下,修改一點,滿足了需求。其實碰上問題就百度這種方式是很不對的,所有的控制元件使用方法在Android Develop Docs中都有介紹:/sdk/docs/reference/android/widget/AutoCompleteTextView.html。哎,我們都是應用程式猿,但我們又連API都不看。。。或許你覺得密密麻麻的英文看著頭疼?或許你又翻不了牆?或許吧,還是那句老話,成功的人找方法,而失敗的人嘛,對吧。
今天想給AutoCompleteTextView加個圖示,就是上圖左側那個放大鏡按鈕,於是找好素材,設定drawableLeft,執行,發現沒有效果。於是檢視自定義控制元件的原始碼(就是上面使用自定義adapter的那個連結裡提到的),發現是在init方法中綁定了setOnTouchListener, 然後onTouchListener中又通過MotionEvent判斷觸控的區域,而觸控的物件使用的是setCompoundDrawablesWithIntrinsicBounds,這不就是drawableLeft、drawableRight所對應的方法嘛,果斷刪除自定義控制元件ClearableAutoCompleteTextView,使用原生AutoCompleteTextView,加入drawableLeft放大鏡按鈕,drawableRight使用刪除小圖示,然後對控制元件setOnTouchListener,程式碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | actvCityLetter.setOnTouchListener(newView.OnTouchListener(){ @Override publicbooleanonTouch(Viewv,MotionEvent event){ if(actvCityLetter.getCompoundDrawables()[2]==null) returnfalse; if(event.getAction()!=MotionEvent.ACTION_UP) returnfalse; //觸控點位置判斷 if(event.getX()>actvCityLetter.getWidth()-actvCityLetter.getPaddingRight()-getResources().getDimension(R.dimen.space_4_touch)){ actvCityLetter.setText(""); } returnfalse; } }); |
一下子就腰不疼腿不酸了。注意“觸控點位置判斷”那行,意思是當前觸控點如果大於AutoCompleteTextView的寬度減去paddingRight的值再剪掉一個固定值(R.dimen.space_4_touch,我這裡是10dip),就算觸控到了刪除小圖示;固定值是多少根據情況來,值越大可以觸控的空間越大,相反越小,使用者可能就點選不到那塊區域(刪除小圖示的區域)從而激發不了事件,這也算是優化使用者體驗的一種手段吧。
相關推薦
Android控制元件之帶清空按鈕(功能)的AutoCompleteTextView自動提示
功能折騰完了記錄一下。帶刪除按鈕的AutoCompleteTextView,普通的自動提示控制元件用起來比較簡單,準備好陣列給控制元件setAdapter一下行了,這裡要說的是提取sqlite中的資料繫結並且加上清空按鈕,先來張圖片。 最初沒有用過AutoComplet
android自定義view_ClearEditText帶清空按鈕的輸入框
建立一個類繼承EditText import android.annotation.SuppressLint; import android.content.Context; import android.graphics.drawable.Drawable; impo
Android 帶清空按鈕的Edittext
import android.content.Context; import android.graphics.drawable.Drawable; import android.support.v4.content.ContextCompat; import android.support
android自定義文字框,後面帶清空按鈕
class MyEditText extends EditText { private final String TAG = "MyEditText"; private Drawable dRight; private Rect rBounds; // 構造器 public MyEditText(Conte
自定義控制元件之 SubmitBotton (提交按鈕)
在 Android 中我覺得除了實現很多功能性很強的需求之外,最吸引我的就是各種炫酷的自定義控制元件,但是自定義控制元件這個東西沒有辦法用一種固定的模式來講解,因為自定義控制元件都是根據需求來定製的。同時這也說明只要程式猿牛逼,就沒有實現不了的功能。 之前有看到一個效果: Android
Android控制元件之LabelView
最近研究android控制元件開發,學習無捷徑,逛github,看到一個LabelView的demo,感覺還是挺不錯,也比較實用,所以拿來學習了一下。 附上源專案的地址:
Android控制元件之圓形進度條
Android-自定義ProgressBar實現圓弧進度條 在之前的專案中用到過這個,感覺還是非常實用的,我實現的是額度的增長. 繼承於ProgressBar實現,保留了Progressbar的特性,原始碼在文尾。
Android控制元件之ListView(初識)
ListView 控制元件可使用四種不同檢視顯示專案。通過此控制元件,可將專案組成帶有或不帶有列標頭的列,並顯示伴隨的圖示和文字。 ListView有四種模式: 其作用是新增選擇按鈕框。 設定單選框 Lv.setChoiceMode(ListView.CHOICE_MOD
Android控制元件之AutoCompleteTextView提示輸入
效果圖 AutoComepleteTextView 控制元件的主要的作用是在使用者輸入中,提示輸入。但是隻能提示一次。這裡就出項了MultiautoCompleteTextView控制元件,其主要的功能是也是在使用者輸入中提示輸入。 AutoComepleteTextVie
Android 控制元件之 RecyclerView(一)—— 載入檢視和佈局選擇
本文目錄 一、概述 二、列表檢視的處理 1. item 的佈局檔案 2. 構造 Adapter 類 3. 佈局管理器 1)LinearLayoutManager 2)GridLayoutManager
Android控制元件之RecyclerView的基本使用
三、RecyclerView使用時要匯入android.suport.v7.wedget.RecyclerView包。 RecyclerView實現新增和刪除的簡單例子 <span style="font-size:18px;">public class MainActivity extend
Android控制元件之SlidingDrawer(滑動式抽屜)詳解與例項
SlidingDrawer效果想必大家也見到過,它就是1.5模擬器上進入應用程式列表的效果。下面是截圖 一、簡介 SlidingDrawer隱藏屏外的內容,並允許使用者通過handle以顯示隱藏內容。它可以垂直或水平滑動,它有倆個View組成,其
Android開發:Android控制元件之Spinner
public class SpinnerDemo extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState)
android控制元件之ZoonControls(縮放控制元件)的使用
我們在android開發的過程中經常看到的縮放圖示按鈕。 ZoomControls的使用,主要是監聽兩個事件: OnZoomInClickListener(放大監聽事件) OnZoomOutClickListener(縮小監聽事件) 該控制元件使用非常簡單。 以縮放tex
Android控制元件之WebView(網頁調轉回APP)
問題來源:網頁跳轉回應用 APP開啟網頁,網頁放置在伺服器中(例如,APP開啟百度網頁),開啟網頁之後在某一時刻需要從網頁在跳轉回到APP。 實現原理:使用URI再加上Intent來實現。 URI介紹: 就Android平臺而言,URI主要分三個部分:s
Android控制元件之ProgressBar基本用法
1、ProgressBar控制元件簡介 ProgressBar類的繼承關係 java.lang.Object android.view.View android.widget.ProgressBar 在某些操作的進度中的可視指示器,為使用者呈現操作的進度,它還有一個次要的進
Android控制元件之WebView(基礎知識)
1. 常用設定 1.1 開啟網頁時不呼叫系統瀏覽器,而是在WebView中顯示。 WebView如果不設定setWebViewClient(),網頁在系統系統瀏覽器中開啟,如果設定則在WebView中顯示,同時還可以自定義WebViewClient。
Android控制元件:RadioButton(單選按鈕)
首先,在佈局檔案 activity_main.xml中註冊一個RadioGroup,併為RadioGroup設定監聽,圖中兩個RadioButton為一個RadioGroup。 activity_main.xml <LinearLayout xmlns:and
android控制元件之AutoCompleteTextView下拉列表顯示一片空白
在使用AutoCompleteTextView控制元件時,出現控制元件的下拉列表顯示為空白, 當選中下拉列表的某一欄時卻能看見內容的現象。 原始碼:ArrayAdapter adapter = new ArrayAdapter(AutoComplite.this, and
Android控制元件之ImageView(一)
前言 Hi,喜歡每天練習的小夥伴肯定對上一篇的Button瞭如指掌了,那麼今天我們為大家帶來了ImageView控制元件,這個控制