我想使用setClicable()使按钮无法点击,但它不起作用。我正在使用inflater,因为我需要。 这是我的代码:
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);
}
答案 0 :(得分: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);
}
});
答案 1 :(得分: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(false)。
我们可以使用setEnabled()
作为标记,因为它的状态在调用点击时不受影响(与状态更改的setClickable()
不同。)
答案 2 :(得分:0)
使用setOnClickListener时,如文档中所述,无法点击的视图(= v.setClickable(false))将变为可点击。
...单击此视图时要调用的回调。如果这 视图不可点击,它变得可点击。
如果要将OnClickListener设置为按钮或任何其他视图,最好使用v.setEnabled(false)...