如何使一些视图可触摸,同时使其他(如RelativeLayout)不可触摸

时间:2013-05-31 01:07:53

标签: android

Window w = getWindow();
w.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

上面的代码是为了让整个窗口无法触及。

但是,此窗口内的按钮也不可触摸,而我希望它可以点击。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Window w = getWindow();
w.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

b = (Button)findViewById(R.id.button1);
b.setClickable(true);
b.setOnClickListener(this);

}

如何使该按钮可触摸?

2 个答案:

答案 0 :(得分:1)

除非您注册,否则布局中的其他视图不应注册onclicks。您将整个窗口设置为不可触摸的行为是什么?

编辑:此代码可用于设置几乎任何视图的任何设置,只要您希望它们都一样。要将多个视图设置为不可点击,只需将它们全部放入view []数组中,然后像这样通过它们进行迭代

TextView a,b,c;
EditText d,e,f;
RelativeLayout g,h,i;

@Override
protected void onCreate(){


//intstatiate and inflate all your views....you should know how to do that

View[] viewHolder = {a,b,c,d,e,f,g,h,i};
for(int i = 0; viewHolder.length>i; i++){

    viewHolder[i].setClickable(false);

}

这将完全符合您的要求,但除非其他观点正在关注,否则您不应该这样做。但它会奏效。

答案 1 :(得分:0)

使用此代码:

  Window w = getWindow();
  w.addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);

整个窗口将被设置为不可触摸。或者,您可以对XML中添加的每个View使用onClickListener。偶数布局可以有自己的点击监听器