東坡下載:內(nèi)容最豐富最安全的下載站!

首頁IT技術(shù) → 如何在EditText框內(nèi)嵌入Button

如何在EditText框內(nèi)嵌入Button

相關(guān)文章發(fā)表評論 來源:本站整理時間:2013/1/11 14:48:13字體大小:A-A+

更多

作者:不詳點(diǎn)擊:1513次評論:3次標(biāo)簽: 在EditText框內(nèi)嵌入Button

  • 類型:開關(guān)定時大。393KB語言:中文 評分:.0
  • 標(biāo)簽:
立即下載

如何在EditText框內(nèi)嵌入Button呢?有很多人希望能在一個EditText中嵌入一個Button,用作搜索、清除等作用,下面是一位網(wǎng)友分享的一個比較簡單的方案。

以下實(shí)現(xiàn)的是將Button放在EditText的右部。首先聲明了一個類ButtonEditText繼承自EditText,然后定義了一個Button,以及控制這個Button的高度、寬度的padding。高度的padding是指Button和EditText上下邊框的距離,而寬度的padding是指Button和EditText右邊框的距離。

然后根據(jù)父類定義構(gòu)造函數(shù)。init()函數(shù)是定義來初始化Button的,這里初始化Button比較簡單,只設(shè)置了一個Text和ClickListener,如果需要更加復(fù)雜的初始化工作,可能需要用到自定義的attribute,詳見這篇文章http://sxote.blog.51cto.com/885634/1112857。

為了實(shí)現(xiàn)Button的點(diǎn)擊效果,必須要把Touch的事件傳遞給Button,所以必須要重載dispatchTouchEvent()函數(shù),如下:

上面的對event.getY() 和event.getX()的判斷就是為了定位Touch事件發(fā)生在Button上,如果發(fā)生在Button上,就給它傳遞Touch事件。否則就用EditText的dispatchTouchEvent()函數(shù)。如果你需要對Button做一些高級的效果,這里可能還需要判斷Button是否需要ACTION_OUTSIDE/ACTION_CANCEL消息。

下面就需要對Button的顯示進(jìn)行處理了。顯示首先是measure()、layout(),然后是draw(),缺一不可。重載如下:

最后的效果如下圖所示:

附完整源文件:

擴(kuò)展知識

相關(guān)評論

閱讀本文后您有什么感想? 已有 人給出評價!

  • 2791 喜歡喜歡
  • 2101 頂
  • 800 難過難過
  • 1219 囧
  • 4049 圍觀圍觀
  • 5602 無聊無聊
熱門評論
最新評論
第 4 樓 本機(jī)地址CZ88.NET 網(wǎng)友 客人 發(fā)表于: 2017/5/26 14:44:30
能接收到点击事件,但是看不到按钮

支持( 0 ) 蓋樓(回復(fù))

第 3 樓 本機(jī)地址CZ88.NET 網(wǎng)友 客人 發(fā)表于: 2017/2/17 14:36:53
再弄个Button的点击事件呗

支持( 0 ) 蓋樓(回復(fù))

第 2 樓 北京開心網(wǎng) 網(wǎng)友 客人 發(fā)表于: 2015/1/29 19:54:37
啦啦啦啦啦啦啦啦啦啦啦啦我还是搞不出来

支持( 0 ) 蓋樓(回復(fù))

第 1 樓 四川鐵通 網(wǎng)友 客人 發(fā)表于: 2014/10/16 16:40:39
啦啦啦啦啦啦啦啦啦啦啦啦啦

支持( 0 ) 蓋樓(回復(fù))

發(fā)表評論 查看所有評論(3)
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)