最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android擴(kuò)大View點擊區(qū)域方案示例

 更新時間:2023年08月03日 14:38:06   作者:尋水的魚Chock  
這篇文章主要為大家介紹了Android擴(kuò)大View點擊區(qū)域方案示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1、前言

開發(fā)過程中經(jīng)常會遇到如下這種場景,對于CheckBox而言,整體較小,然后為了用戶體驗--“好點”,往往需要擴(kuò)大點擊區(qū)域。通常的做法就是給CheckBox增加Padding以達(dá)到擴(kuò)大點擊區(qū)域的目的,但是為了對齊UI,往往需要一通計算跟調(diào)整才能“如愿以償”,可謂哭笑不得。那怎么樣可以優(yōu)雅的解決這個問題呢?

可以配合BindingAdapter實現(xiàn)在xml上的直接處理。

2、解決方案

2.1、直接上代碼

@BindingAdapter("expandTouchArea")
fun expandTouchArea(view: View, size: String) {
    view.postDelayed({
        val bounds = Rect()
        view.getHitRect(bounds)
        var left = 0
        var top = 0
        var right = 0
        var bottom = 0
        /*
        *  size 舉例 `2` or `2 4` or `2 4 6 8`
         */
        val mSize = size.trim()
        val ss = mSize.split(" ")
        when (ss.size) {
            1 -> {
                val sdp = (ss[0].toIntOrNull() ?: 0).idp()
                left = sdp
                top = sdp
                right = sdp
                bottom = sdp
            }
            2 -> {
                val sdp = (ss[0].toIntOrNull() ?: 0).idp()
                val sdp1 = (ss[1].toIntOrNull() ?: 0).idp()
                left = sdp
                top = sdp1
                right = sdp
                bottom = sdp1
            }
            4 -> {
                left = (ss[0].toIntOrNull() ?: 0).idp()
                top = (ss[1].toIntOrNull() ?: 0).idp()
                right = (ss[2].toIntOrNull() ?: 0).idp()
                bottom = (ss[3].toIntOrNull() ?: 0).idp()
            }
            else -> {
                return@postDelayed
            }
        }
        bounds.left -= left
        bounds.top -= top
        bounds.right += right
        bounds.bottom += bottom
        val mTouchDelegate = TouchDelegate(bounds, view);
        val p = view.parent
        if (p is ViewGroup) {
            p.touchDelegate = mTouchDelegate;
        }
    }, 100)
}

 其中idp()是dp轉(zhuǎn)px的轉(zhuǎn)換函數(shù)(Kotlin擴(kuò)展),實際使用時請?zhí)鎿Q。

2.2、使用示例:

<CheckBox
    android:layout_width="14dp"
    android:layout_height="14dp"
    android:background="@drawable/ic_cb_common"
    android:button="@null"
    android:checked="false"
    app:expandTouchArea="@{`20 10 50 20`}"/>

2.3、參數(shù)解析

//表示在View原有范圍的基礎(chǔ)上在四周增加20dp的區(qū)域
app:expandTouchArea="@{`20`}
//表示在View原有范圍的基礎(chǔ)上左右增加20dp, 上下增加10dp的區(qū)域
app:expandTouchArea="@{`20 10`}
//表示在View原有范圍的基礎(chǔ)上, 左上右下分別增加20dp 10dp 50dp 20dp的區(qū)域
app:expandTouchArea="@{`20 10 50 20`}

2.4、注意事項

1、若View的自定義觸摸范圍超出View.parent的大小,則超出的那部分無效。

2、一個ViewGroup里只能設(shè)置一個,設(shè)置多個時只有最后設(shè)置的那個有效。(也可以多個,需要自定義ViewGroup

3、只有設(shè)置那個View的View.parent接收到點擊事件時才能觸發(fā),也就是說這個區(qū)域是可以被其他View遮擋的,so被遮擋時也無效。

以上就是Android擴(kuò)大View點擊區(qū)域方案示例的詳細(xì)內(nèi)容,更多關(guān)于Android擴(kuò)大View點擊區(qū)域的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Android中Canvas的常用方法總結(jié)

    Android中Canvas的常用方法總結(jié)

    在Android自定義View的時候,我們經(jīng)常需要繪制一些自己想要的效果。這里就需要使用Canvas對象。下面這篇文章將Canvas對象常用方法做個筆記,方便自己和大家以后使用的時候查閱,下面來一起看看吧。
    2016-09-09
  • Android橫向進(jìn)度條演示效果

    Android橫向進(jìn)度條演示效果

    這篇文章主要為大家詳細(xì)介紹了Android橫向進(jìn)度條的演示效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Android SeekBar實現(xiàn)禁止滑動

    Android SeekBar實現(xiàn)禁止滑動

    這篇文章主要為大家詳細(xì)介紹了Android SeekBar實現(xiàn)禁止滑動,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • android 判斷網(wǎng)絡(luò)是否可用與連接的網(wǎng)絡(luò)是否能上網(wǎng)

    android 判斷網(wǎng)絡(luò)是否可用與連接的網(wǎng)絡(luò)是否能上網(wǎng)

    下面小編就為大家分享一篇android 判斷網(wǎng)絡(luò)是否可用與連接的網(wǎng)絡(luò)是否能上網(wǎng),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Android端使用Modbus協(xié)議的簡單方法

    Android端使用Modbus協(xié)議的簡單方法

    Modbus協(xié)議是全球第一個用于工業(yè)現(xiàn)場的總線協(xié)議,與外設(shè)交互可以采用串口通信,tcp等方式,這篇文章主要給大家介紹了關(guān)于Android端使用Modbus協(xié)議的簡單方法,需要的朋友可以參考下
    2021-11-11
  • Android中常用的XML生成方法實例分析

    Android中常用的XML生成方法實例分析

    這篇文章主要介紹了Android中常用的XML生成方法,以實例形式較為詳細(xì)的分析了Android生成XML的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • Android中 動態(tài)改變對話框值的方法

    Android中 動態(tài)改變對話框值的方法

    Android Dev-Guide 推薦重寫Activity.onCreateDialog()方法來創(chuàng)建Dialog,這樣Dialog就歸屬于這個Activity了。
    2013-04-04
  • Android WebView打開網(wǎng)頁一片空白的解決方法

    Android WebView打開網(wǎng)頁一片空白的解決方法

    這篇文章主要介紹了Android WebView打開網(wǎng)頁一片空白的解決方法,試了很多方法,最后記錄一下,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Android開發(fā)返回鍵明暗點擊效果的實例代碼

    Android開發(fā)返回鍵明暗點擊效果的實例代碼

    這篇文章主要介紹了Android開發(fā)返回鍵明暗點擊效果的實例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Android編程實現(xiàn)兩個Activity之間共享數(shù)據(jù)及互相訪問的方法

    Android編程實現(xiàn)兩個Activity之間共享數(shù)據(jù)及互相訪問的方法

    這篇文章主要介紹了Android編程實現(xiàn)兩個Activity之間共享數(shù)據(jù)及互相訪問的方法,簡單分析了Android中Activity數(shù)據(jù)共享與訪問的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11

最新評論

盐边县| 三明市| 潜江市| 蕲春县| 弥渡县| 德清县| 齐齐哈尔市| 大港区| 松原市| 阿克苏市| 泾源县| 曲水县| 彭州市| 新竹市| 新宾| 化德县| 达尔| 开远市| 香港| 阳西县| 岐山县| 三原县| 仙游县| 亚东县| 固镇县| 文成县| 兴义市| 陈巴尔虎旗| 临夏市| 壤塘县| 淮安市| 百色市| 井冈山市| 当雄县| 增城市| 清徐县| 鄂州市| 汤原县| 株洲县| 集贤县| 宁化县|