FAQ_07_android:clickable 問題

 

FAQ_07_android:clickable 問題

分類: FAQ 8808人閱讀 評論(6) 收藏 舉報

在android Button的xml文件屬性中有這麼一個屬性標籤:

  1. android:clickable  
該標籤(繼承自View的xml屬性)的值必須是boolean值,即true、false。該標籤目的是設置button是否可以被點擊。

於是,我Demo一把,xml文件如下:

  1. <Button  
  2.     android:id="@+id/btn_to"  
  3.     android:clickable="false"  
  4.     android:layout_width="fill_parent"   
  5.     android:layout_height="wrap_content"   
  6.     android:text="to"  
  7.     />    
不好意思,運行之後,該Button一如既往的好使,並沒有“不可點擊”。搞不明白、、、、

在 android 中幾乎每一個xml屬性,對應的都有一個方法,於是我改用下面的方法:

  1. setClickable();  
心裏想,這次應該可以了,示意代碼:

  1. btn_to.setClickable(false);  
  2. btn_to.setOnClickListener(new Button.OnClickListener() {  
  3.   
  4.     @Override  
  5.     public void onClick(View v) {  
  6.       // to do    
  7.     }  
  8. });  
再次運行,還是不行!沒辦法,看源碼吧!

我們知道,點擊 button 會觸發下面的源碼(View.java):

  1. public void setOnClickListener(OnClickListener l) {  
  2.         if (!isClickable()) {  
  3.             setClickable(true);  
  4.         }  
  5.         mOnClickListener = l;  
  6.     }  
呵呵,你會明白,只要點擊button都會將setClickable設置爲true,所以在setOnClickListener之前setClickable設置爲false只不過是多此一舉!

那麼,解決辦法就出來了,調換一下代碼的位置即可:

  1. btn_to.setOnClickListener(new Button.OnClickListener() {  
  2.   
  3.     @Override  
  4.     public void onClick(View v) {  
  5.         // to do  
  6.     }  
  7. });  
  8.           
  9. btn_to.setClickable(false);  

這樣,你再次點擊button試一試,呵呵,它無動於衷了吧!

yes,搞定!
發佈了27 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章