setClickable()无法处理按钮

时间:2012-03-06 11:26:13

标签: android layout button view

我想使用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);
}

3 个答案:

答案 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)...