setClickable()在按钮上不起作用。

3

我想使用setClickable()使按钮无法点击,但它不起作用。我正在使用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);
}
3个回答

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

当使用setOnClickListener时,如文档中所述,不可点击的视图(= v.setClickable(false))会变成可点击。

...当单击此视图时调用的回调。如果此视图不可点击,则变为可点击。

如果您想将OnClickListener设置为按钮或任何其他视图,最好使用v.setEnabled(false)...


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()会改变状态)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接