android:如何禁用视图上的所有点击

时间:2011-10-20 18:58:01

标签: android view

我正在尝试设置listview行中视图的所有属性,这些属性将对点击做出反应(可以是简单的按下,长按或其他任何内容)。我尝试将父视图和子视图的.setFocusable,.setFocusableInTouchMode,.setLongClickable,.setClickable,.setPressed,.setSelected,.setHapticFeedbackEnabled属性设置为false,但它没有帮助。

我在列表视图的两个状态之间切换按钮。当我切换到第二状态时,我想禁用行上的所有点击。我用不同的自定义cursoradapter填充listview的每个状态。以下代码片段来自我的第二个状态的第二个cursoradapter:

@Override
public void bindView(View view, Context context, Cursor cursor) {
    RelativeLayout parent = (RelativeLayout) view.findViewById(R.id.title_rows_relativelayout);
    TextView lists_text = (TextView) view.findViewById(R.id.list_title_text);
    lists_text.setText(cursor.getString(cursor.getColumnIndex(ListsDbAdapter.TITLE)));
    lists_text.setBackgroundResource(R.drawable.background_for_rows);
    parent.setBackgroundResource(R.drawable.background_for_rows);

    view.setFocusable(false);
    view.setFocusableInTouchMode(false);
    view.setHapticFeedbackEnabled(false);
    view.setLongClickable(false);
    view.setClickable(false);
    view.setPressed(false);
    view.setSelected(false);

    parent.setFocusable(false);
    parent.setFocusableInTouchMode(false);
    parent.setHapticFeedbackEnabled(false);
    parent.setLongClickable(false);
    parent.setClickable(false);
    parent.setPressed(false);
    parent.setSelected(false);

    lists_text.setFocusable(false);
    lists_text.setFocusableInTouchMode(false);
    lists_text.setHapticFeedbackEnabled(false);
    lists_text.setLongClickable(false);
    lists_text.setClickable(false);
    lists_text.setPressed(false);
    lists_text.setSelected(false);
}

提前谢谢。

2 个答案:

答案 0 :(得分:7)

我遇到了类似的问题。

setEnabled(false) 

..为我做了这份工作。

答案 1 :(得分:1)

如果我正确理解你,你不应该需要两个适配器。您可以只使用一个并将onClickListener添加到视图中,以禁用所有内容:

view.setOnClickListener(new View.onClickListener(){
  public void onClick(View view){
    //do all your code for disabling stuff in here
  }
});

也许这样做而不必在适配器之间切换会对你有帮助。