2012-03-06 56 views
3

我想使用setClicable()使按鈕不可點擊,但它不起作用。我正在使用充氣器,因爲我需要。 這是我的代碼:setClickable()在按鈕上不工作

mContactList = (LinearLayout) findViewById(R.id.contactList); 
LayoutInflater inflater = getLayoutInflater(); 
for (ListIterator<ContactModel> it = contactList.listIterator(); it.hasNext();){ 
     ContactModel contact = it.next(); 

View view = inflater.inflate(R.layout.contact_unknown_list_row, null); 
view.findViewById(R.id.inviteButton).setTag(contact.getEmail()); 
view.findViewById(R.id.inviteButton).setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) {     
     String address = (String) v.getTag(); 
     sendInvatoin(address); 
     if(v.findViewById(R.id.inviteButton).isClickable()) 
     v.findViewById(R.id.inviteButton).setClickable(false); 
    } 
    }); 
mContactList.addView(view); 
} 

回答

11

嘗試使用。

button.setEnabled(false); 

在你的情況,你會做這樣的事:

view.findViewById(R.id.inviteButton).setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) {     
     String address = (String) v.getTag(); 
     sendInvitatoins(address); 
     Button b = (Button)v; 
     b.setEnabled(false); 
    } 
}); 
+0

它不工作。 – 2012-03-06 11:56:13

+0

讓我看看更多的代碼。 – 2012-03-06 11:58:43

+0

我編輯並添加了更多代碼。 – 2012-03-06 12:03:32

0

當使用setOnClickListener,無法點擊美景(= v.setClickable(假))在文件中提到將成爲點擊。

...單擊該視圖時要調用的回調。如果這個 視圖不可點擊,它將變爲可點擊。

最好使用v.setEnabled(假),如果你想一個OnClickListener設置爲按鈕或任何其他視圖...

1

這將在ImageView的情況下,以及按鈕的工作。

private OnClickListener onClickListener = new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     if (imageview.isEnabled()){ 
      //I have wrapped all code inside onClick() in this if condition 
      //Your onClick() code will only execute if the imageview is enabled 
      //Now we can use setEnabled() instead of setClickable() everywhere 
     }} 
    }; 

裏面onCreate(),你可以做setEnabled(false)這將等同於setClickable(假)。

我們能夠使用setEnabled()作爲標記,因爲它的狀態在點擊調用時不會受到影響(不像setClickable()的狀態發生變化)。