日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

button-xml 中android:clickable=false 属性

發布時間:2024/1/17 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 button-xml 中android:clickable=false 属性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天在做項目的時候,遇到了一個問題,就是需要把一個常按監聽事件,加到一個linearlayout中,但是,這個linearlayout中有其他的button、textview等控件,這樣就導致當我們常按textview的時候,觸發的是textview等子控件的常按事件。今天我們討論的并不是如何解決這個問題,而是在解決這個問題的過程中,我遇到的android:clickable 跟 android:longClickable 這兩個xml屬性。

先看這兩個屬性在xml中的用法

<Buttonandroid:id="@+id/bt0"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#ff0000"android:clickable="false"android:longClickable="false"android:text="long fasle" />

這兩個屬性有什么意義呢,我們看Button 中對這兩個屬性的處理

case com.android.internal.R.styleable.View_clickable:clickable = a.getBoolean(attr, clickable);break;case com.android.internal.R.styleable.View_longClickable:longClickable = a.getBoolean(attr, longClickable);break;} } a.recycle();setFocusable(focusable);setClickable(clickable);setLongClickable(longClickable);

我們很明白,它其實就是setClick 跟 setLongClick方法xml中的使用。

那么問題就來了。在代碼里設置了上面兩個屬性為false,但當我在代碼中給這這個按鈕設置點擊事件的時候,這兩個點擊事件仍然可以觸發,而且似乎沒有影響。后來我發現了問題所在。我們看一下

setOnClickListener 方法中到底做了什么事情

public void setOnClickListener(OnClickListener l) {if (!isClickable()) {setClickable(true);} getListenerInfo().mOnClickListener = l;}public void setOnLongClickListener(OnLongClickListener l) {if (!isLongClickable()) {setLongClickable(true);}getListenerInfo().mOnLongClickListener = l;}

我們很清除就知道了,之所以這兩個屬性設置沒有效果,是因為,當我們給一個控件添加點擊事件的時候,它們會重新把這個控件的clickable 屬性進行設置。所以,如果我們想要禁掉一個控件的點擊事件,我們必須是在點擊事件以后使用

setLongClickable(false); setClickable(false)

方法

轉載于:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_clickable_1583213.html

總結

以上是生活随笔為你收集整理的button-xml 中android:clickable=false 属性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。