RadioGroup,setEnabled(false)无效!

我已经使用setEnabled(false)来设置它无法,但它不起作用。 在此方法之后,RadioGroup.IsEnabled()的值为false。 价值改变了。

该代码来自Android编程指南。 Ps:Spinner组件使用setEnabled(false)很好。

代码如下:

package com.example.testviews;

import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.RadioGroup; public class TestRadioGroup extends Activity { @Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.radiogroup); final RadioGroup testRadioGroup = (RadioGroup) findViewById(R.id.testRadioGroup); final Button changeEnabledButton = (Button) findViewById(R.id.changeEnabledButton); changeEnabledButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub changeEnabled(testRadioGroup); } }); final Button changeBgColorButton = (Button) findViewById(R.id.changeBackgroundColorButton); changeBgColorButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub changeBgColor(testRadioGroup); } }); } protected void changeBgColor(RadioGroup testRadioGroup) { // TODO Auto-generated method stub testRadioGroup.setBackgroundColor(Color.BLUE); } protected void changeEnabled(RadioGroup testRadioGroup) { // TODO Auto-generated method stub if (testRadioGroup.isEnabled()) { testRadioGroup.setEnabled(false); } else { testRadioGroup.setEnabled(true); } } 

}

Solutions Collecting From Web of "RadioGroup,setEnabled(false)无效!"

使用以下方法:

 for (int i = 0; i < testRadioGroup.getChildCount(); i++) { testRadioGroup.getChildAt(i).setEnabled(false); } 

视图可以由多个可触摸元素组成。 你必须全部禁用它们,如下所示:

 for(View lol : your_spinner.getTouchables() ) { lol.setEnabled(false); } 

如果它是一个简单的,因为它也返回自己:

查找并返回作为此视图后代的所有可触摸视图,如果它本身可触摸,则可能包括此视图。

查看#getTouchables()

您不能使用以下代码;

 for(View lol : your_spinner.getTouchables() ) { lol.setEnabled(false); } 

一旦视图被禁用,就不再有可触摸的孩子/后裔视图。